Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Leftpad (auffüllen mit 0) in SQL-Abfrage (https://www.delphipraxis.net/108729-leftpad-auffuellen-mit-0-sql-abfrage.html)

Alfonso 18. Feb 2008 15:47

Datenbank: MsAccess • Version: 2000 • Zugriff über: ADO

Leftpad (auffüllen mit 0) in SQL-Abfrage
 
Ich habe eine Tabelle die z.B. folgende Datensätze enthält:
Code:
1
5
4
53
22
A
C
Wenn ich eine SQL Abfrage sortiert mache erhalte ich:
Code:
1
22
4
5
53
A
C
Es wird halt nicht numerisch sondern Alphanumerisch sortiert. Gibt es eine Möglichkeit in SQL (für ADO Zugriff auf eine Access-DB), etwas ähnliches wie PADLEFT zu machen, z.B. SORT BY PADLEFT("0",5, [Feldname])? Dadürch würden alle Werte vorher auf 5 Stellen mit Nullen aufgefüllt und die sortierung würde funktionieren.

Gruß
Alfonso

marabu 18. Feb 2008 16:39

Re: Leftpad (auffüllen mit 0) in SQL-Abfrage
 
Hallo Alfonso,

du wirst wissen, wie du mit den alphanumerischen Werte in deinem Beispiel umgehen möchtest. Führende Nullen werden in T-SQL mit REPLICATE und DATALENGTH produziert:

SQL-Code:
SELECT REPLICATE('0', 5 - DATALENGTH(fieldname)) + fieldname AS demo ...
In Access dürften String() und Len() die äquivalenten Funktionen sein, falls dort Replicate() und DataLength() nicht bekannt sind. Ich habe leider kein Access zum Testen zur Verfügung.

Freundliche Grüße

omata 18. Feb 2008 16:47

Re: Leftpad (auffüllen mit 0) in SQL-Abfrage
 
Vielleicht so...
SQL-Code:
SELECT *
FROM tabelle
ORDER BY Mid("00000", 1, 5 - LEN(feld)) + feld
Gruss
Thorsten

Alfonso 18. Feb 2008 16:51

Re: Leftpad (auffüllen mit 0) in SQL-Abfrage
 
Vielen Dank euch beiden.
Die erste Lösung klappt hervorragend. In Access-SQL heißt es dann so:
SQL-Code:
ORDER BY String((5-Len([Ziffer])),"0")+[Ziffer];
bye
Alfonso


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz