Discussion:
Spalte mit nullen auffüllen
(zu alt für eine Antwort)
Sven
2007-06-11 14:27:01 UTC
Permalink
Hallo,

ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9 Stellen
hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?

Gruß
Sven
B***@gmail.com
2007-06-11 14:44:49 UTC
Permalink
Post by Sven
Hallo,
ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9 Stellen
hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?
Gruß
Sven
create procedure [fuehrende0]
@Tabelle VARCHAR(4000),
@Spalte VARCHAR(4000)
AS
BEGIN
DECLARE @maxlaenge INT
DECLARE @laenge INT
DECLARE @sql NVARCHAR(4000)
DECLARE @id INT

-- Minimale berechnen
SET @sql = '(SELECT @p1 = MIN(LEN(' + @Spalte + ')) FROM ' + @Tabelle
+ ')'
EXEC sp_executesql @sql,N'@p1 INT OUTPUT', @id OUTPUT
SET @laenge = @id
-- Maximale Länge
SET @sql = '(SELECT @p1 = MAX(LEN(' + @Spalte + ')) FROM ' + @Tabelle
+ ')'
EXEC sp_executesql @sql,N'@p1 INT OUTPUT', @id OUTPUT
SET @maxlaenge = @id

WHILE @laenge < @maxlaenge
BEGIN
SET @sql = 'UPDATE ' + @Tabelle +
' SET ' + @Spalte + ' = ' + '''0'' + ' + @Spalte +
' WHERE LEN(' + @Spalte + ') <> ' + CONVERT(nvarchar(2),@maxlaenge)
exec(@sql)
SET @sql = '(SELECT @p1 = MIN(LEN(' + @Spalte + ')) FROM ' +
@Tabelle + ')'
EXEC sp_executesql @sql,N'@p1 INT OUTPUT', @id OUTPUT
SET @laenge = @id
END
END



Füllt die Spalte links mit Nullen, bis zur längsten Zeichenkette
Ausführen mit
exec fuehrende0 Tabellenname,Spaltenname

Greets

Bernhard
Robert Klemme
2007-06-11 15:06:22 UTC
Permalink
Post by B***@gmail.com
Post by Sven
Hallo,
ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9 Stellen
hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?
Gruß
Sven
create procedure [fuehrende0]
@Tabelle VARCHAR(4000),
@Spalte VARCHAR(4000)
AS
BEGIN
-- Minimale berechnen
+ ')'
-- Maximale Länge
+ ')'
BEGIN
@Tabelle + ')'
END
END
Füllt die Spalte links mit Nullen, bis zur längsten Zeichenkette
Ausführen mit
exec fuehrende0 Tabellenname,Spaltenname
IMHO viel zu kompliziert. Dann lieber so etwas:

CREATE FUNCTION FILL_ZEROS
(
@val numeric,
@length int
)
RETURNS varchar(1024)
AS
BEGIN
DECLARE @filled VARCHAR(1024)

SET @filled = CONVERT(VARCHAR, @val)

WHILE LEN(@filled) < @length
SET @filled = '0' + @filled

RETURN @filled
END
GO
SELECT dbo.FILL_ZEROS(3, 5)

Fehlerbehandlung und Verarbeitung negativer Werte fehlen natürlich noch.

Ciao

robert
B***@gmail.com
2007-06-11 20:07:18 UTC
Permalink
Hi
kann sein, Zweck meiner Proc war einfach.

Ich weiß, dass die Spalte mit 0en gefüllt werden muss,
Ich brauche aber nicht wissen, wie lange die längste und kürzeste
Spalte ist.
Es wird einfach aufgefüllt.

Für meine Dimensiontabellen (im schlimmsten Fall 200K Datensätze)
flutscht das immer noch.

tschöö
da Buelli
Robert Klemme
2007-06-11 14:46:53 UTC
Permalink
Post by Sven
ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9 Stellen
hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?
Was meinst du damit? Numerische Spalten kann man nicht auffüllen. Du
kannst sie höchstens bei der Anzeige (während der Abfrage) formatieren.
Bin mir nicht sicher, ob SQL Server dafür überhaupt Funktionen hat.
Sonst musst du das entweder in deinem Client machen oder dir selber eine
Funktion in SQL Server schreiben. BOL hilft weiter. :-)

Ciao

robert
Jörg Ackermann
2007-06-11 18:03:10 UTC
Permalink
Hallo Sven,
Post by Sven
ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9
Stellen hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?
Update
tabelle
set Spalte =
Replace(Space(9-len(isnull(spalte,''))),' ','0')+
isnull(spalte,'')
from tabelle;

Gruß
Jürgen Volke
2007-06-12 06:18:53 UTC
Permalink
Hallo Sven
Post by Sven
ich habe eine Spalte in meiner Tabelle, dessen Wert zwischen 7 und 9
Stellen hat. ich brauche den Wert aber 9-stellig.
Wie kann ich die Werte mit Nullen auffüllen?
UPDATE DeineTabelle
SET DeinFeld = right('000' + rtrim(DeinFeld),9)

HTH Jürgen

Lesen Sie weiter auf narkive:
Suchergebnisse für 'Spalte mit nullen auffüllen' (Fragen und Antworten)
3
Antworten
Was ist ein Hurwitz Kriterium?
gestartet 2006-11-15 05:21:23 UTC
hochschule
Loading...