550 Stimmen

Füllen Sie einen String mit führenden Nullen auf, sodass er in SQL Server 2008 3 Zeichen lang ist

Ich habe eine Zeichenfolge, die beim ersten Erstellen in SQL Server 2008 R2 bis zu 3 Zeichen lang ist.

Ich möchte sie mit führenden Nullen auffüllen, damit der neue Wert beispielsweise '001' ist, wenn der ursprüngliche Wert '1' war. Oder wenn der ursprüngliche Wert '23' war, ist der neue Wert '023'. Oder wenn der ursprüngliche Wert '124' war, bleibt der neue Wert gleich wie der ursprüngliche Wert.

Ich verwende SQL Server 2008 R2. Wie würde ich das mit T-SQL machen?

4voto

Konstantin Punkte 3086

Für Ganzzahlen können Sie eine implizite Umwandlung von int in varchar verwenden:

SELECT RIGHT(1000 + field, 3)

2voto

Etan A Ehsanfar Punkte 321

Ich hatte ein ähnliches Problem mit einer Integer-Spalte als Eingabe, als ich eine festgelegte Varchar (oder String)-Ausgabe benötigte. Zum Beispiel, 1 zu '01', 12 zu '12'. Dieser Code funktioniert:

SELECT RIGHT(CONCAT('00',field::text),2)

Wenn die Eingabe auch eine Spalte von Varchar ist, können Sie den Cast-Teil vermeiden.

2voto

ncastillo Punkte 41

Für einen dynamischeren Ansatz probieren Sie dies aus.

declare @val varchar(5)
declare @maxSpaces int
set @maxSpaces = 3
set @val = '3'
select concat(REPLICATE('0',@maxSpaces-len(@val)),@val)

2voto

Discovery Punkte 41

Zuletzt entscheide ich mich, dies zu verwenden:

RECHTS(STUFF(ReceiptNum, 1, 0, REPLICATE('0',10)),10)

1voto

DEBASIS PAUL Punkte 11

Einfach ist das

Wie:

DECLARE @DUENO BIGINT
SET @DUENO=5

SELECT 'ND'+STUFF('000000',6-LEN(RTRIM(@DueNo))+1,LEN(RTRIM(@DueNo)),RTRIM(@DueNo)) DUENO

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X