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?

27voto

Bill Punkte 271

Ich habe immer die folgende Methode als sehr hilfreich empfunden.

REPLICATE('0', 5 - LEN(Job.Number)) + CAST(Job.Number AS varchar) as 'NumberFull'

19voto

Salar Punkte 2048

Verwenden Sie diese Funktion, die zu jeder Situation passt.

CREATE FUNCTION dbo.fnNumPadLeft (@input INT, @pad tinyint)
RETURNS VARCHAR(250)
AS BEGIN
    DECLARE @NumStr VARCHAR(250)

    SET @NumStr = LTRIM(@input)

    IF(@pad > LEN(@NumStr))
        SET @NumStr = REPLICATE('0', @Pad - LEN(@NumStr)) + @NumStr;

    RETURN @NumStr;
END

Beispieloutput

SELECT [dbo].[fnNumPadLeft] (2016,10) -- gibt 0000002016 zurück
SELECT [dbo].[fnNumPadLeft] (2016,5) -- gibt 02016 zurück
SELECT [dbo].[fnNumPadLeft] (2016,2) -- gibt 2016 zurück
SELECT [dbo].[fnNumPadLeft] (2016,0) -- gibt 2016 zurück

6voto

Alan B. Dee Punkte 5182

Für diejenigen, die ihre vorhandenen Daten aktualisieren möchten, hier ist die Abfrage:

update SomeEventTable set eventTime=RIGHT('00000'+ISNULL(eventTime, ''),5)

6voto

Dr.Stark Punkte 106

Versuchen Sie es mit fester Länge.

select right('000000'+'123',5)

select REPLICATE('0', 5 - LEN(123)) + '123'

5voto

Niel Buys Punkte 75

Ich weiß, dass dies ein alter Eintrag ist, aber ich dachte, ich würde dies teilen:

Ich habe diesen Code gefunden, der eine Lösung bietet. Ich bin mir nicht sicher, ob es auf allen Versionen von MSSQL funktioniert; ich habe MSSQL 2016.

declare @value as nvarchar(50) = 23
select REPLACE(STR(CAST(@value AS INT) + 1,4), SPACE(1), '0') as Leadingzero

Dies gibt "0023" zurück.

Die 4 in der STR-Funktion ist die Gesamtlänge, einschließlich des Werts. Zum Beispiel werden 4, 23 und 123 alle 4 in STR haben und die richtige Anzahl von Nullen wird hinzugefügt. Sie können es erhöhen oder verringern. Keine Notwendigkeit, die Länge beim 23 zu bekommen.

Bearbeitung: Ich sehe, dass es dasselbe ist wie der Beitrag von @Anon.

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