Ich arbeite an einer SQL-Abfrage, die aus einer SQLServer-Datenbank liest, um eine Extraktdatei zu erstellen. Eine der Anforderungen, um die führenden Nullen aus einem bestimmten Feld zu entfernen, ist ein einfaches VARCHAR(10)
Feld. Wenn das Feld beispielsweise '00001A' enthält, muss die SELECT-Anweisung die Daten als '1A' zurückgeben.
Gibt es in SQL eine Möglichkeit, die führenden Nullen auf diese Weise einfach zu entfernen? Ich weiß, dass es eine RTRIM
Funktion gibt, aber dies scheint nur Leerzeichen zu entfernen.
sql
sql-server
tsql
Tim C.
quelle
quelle
Antworten:
quelle
quelle
Rückgaben
N0Z
, dh führende Nullen und alles, was vor ihnen liegt, werden entfernt.quelle
Ich hatte das gleiche Bedürfnis und benutzte dies:
quelle
Wenn Sie möchten, dass die Abfrage eine 0 anstelle einer Nullzeichenfolge oder eines anderen Werts zurückgibt, können Sie dies in eine case-Anweisung wie die folgende umwandeln:
quelle
Sie können dies verwenden:
quelle
Sie können dies versuchen - es besonders darauf nimmt nur entfernen führende Nullen , wenn nötig:
Oder Sie können einfach anrufen
quelle
Hier ist die SQL-Skalarwertfunktion, mit der führende Nullen aus der Zeichenfolge entfernt werden:
quelle
Falls Sie die führenden Nullen aus einer Zeichenfolge mit unbekannter Größe entfernen möchten.
Sie können den Befehl STUFF verwenden.
Hier ist ein Beispiel, wie es funktionieren würde.
Sehen Sie in Fiddler verschiedene Szenarien, die es abdecken wird
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
quelle
Das Entfernen der führenden 0 aus dem folgenden Monat wird definitiv funktionieren.
Ersetzen Sie einfach
GETDATE()
durch das Datumsfeld Ihrer Tabelle.quelle
Sie können dies versuchen
SELECT REPLACE(columnname,'0','') FROM table
quelle
Um die führende 0 zu entfernen, können Sie die Zahlenspalte mit 1 multiplizieren. Beispiel: Wählen Sie (Spaltenname * 1).
quelle
Dies ist ein SQL-Skript, das die Funktionalität des TRIM-Befehls in tsql vor 2017 emuliert. Es entspricht im Wesentlichen den anderen Empfehlungen, die anderen werden jedoch durch ein einzelnes ungewöhnliches Zeichen ersetzt, das immer noch vorkommen kann: '[Rtrim]' oder '[ Ltrim] 'könnte immer noch im Text vorkommen, aber das Ersetzen des Hutes durch einen eindeutigen Text, zum Beispiel ein Guid, würde dieses Problem lösen.
Ich habe es nicht auf Geschwindigkeit getestet
quelle
Ich habe mir die obigen Ideen geliehen. Das ist weder schnell noch elegant. aber es ist genau.
FALL
ENDE
quelle
quelle
Das sollte reichen.
quelle
select trim(leading '0' from '001A');
, aber OP hat nach SQL Server gefragt.