Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

führende Null bei Abfrage

1,169 views
Skip to first unread message

Sven

unread,
Oct 14, 2008, 4:05:01 AM10/14/08
to
Hallo,
ich habe in meiner Datenbank (SQL Server 2005) eine Spalte mit Zahlen, die
1-4stellig sind. Jetzt brauche ich eine Abfrage, die mir die restlichen
Stellen mit Nullen auffüllt.
Gibt es da eine brauchbare Lösung? Ich kenne nur eine Variante, wo man die
Spalte über ein Update ändern.

Danke
Gruß
Sven

Christoph Ingenhaag

unread,
Oct 14, 2008, 4:21:02 AM10/14/08
to

Hi Sven,
probier das mal:

select isnull(replicate('0', 4 - len(Spalte)), '') + cast(Spalte as
varchar(12)) from Tabelle

Vg
Christoph

Stefan Hoffmann

unread,
Oct 14, 2008, 4:22:15 AM10/14/08
to
hallo Sven,

Sven schrieb:


> ich habe in meiner Datenbank (SQL Server 2005) eine Spalte mit Zahlen, die
> 1-4stellig sind. Jetzt brauche ich eine Abfrage, die mir die restlichen
> Stellen mit Nullen auffüllt.

SELECT yourField,
CASE WHEN LEN(CAST(yourField AS VARCHAR(10))) < 5
THEN RIGHT('0000' + LTRIM(yourField), 4)
ELSE CAST(yourField AS VARCHAR(10))
END
FROM yourTable

> Gibt es da eine brauchbare Lösung? Ich kenne nur eine Variante, wo man die
> Spalte über ein Update ändern.

Das geht nur, wenn du Textspalten hast...

mfG
--> stefan <--

Uwe Ricken

unread,
Oct 14, 2008, 4:26:03 AM10/14/08
to
Hallo Sven,

Du meinst so etwas?

DECLARE @MaxDigits tinyint
SET @MaxDigits = 5

SELECT REPLICATE('0', @MaxDigits - LEN(CONVERT(varchar, IdFeld))) +
CONVERT(varchar, IdFeld)
FROM dbo.myTable

HTH ;-)

--
Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH - 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
FAQ: http://www.donkarl.com/AccessFAQ.htm
"Sven" <Sv...@discussions.microsoft.com> schrieb im Newsbeitrag
news:EB08B34B-CB8C-4EC9...@microsoft.com...

Sven

unread,
Oct 14, 2008, 4:42:00 AM10/14/08
to
prima...vielen Dank.
Den varchar(12), kann ich doch bestimmt auch auf varchar(4) kürzen?

Jürgen Volke

unread,
Oct 14, 2008, 5:13:18 AM10/14/08
to
Hallo Sven

RIGHT('0000' + DeinFeld , 4)

HTH Jürgen


Frank Kalis

unread,
Oct 14, 2008, 5:19:35 AM10/14/08
to

IMHO am einfachsten geht es mit:

DECLARE @i int, @j int
SELECT @i = 1, @j = 12
SELECT REPLACE(STR(@i, @j), ' ', '0')
--
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Akaiah

unread,
Apr 12, 2010, 9:50:01 AM4/12/10
to

"Jürgen Volke" wrote:

> Hallo Sven


>
> RIGHT('0000' + DeinFeld , 4)
>
> HTH Jürgen
>

Man sieht das man EINFACH weiter kommt, wenn man nur ein wenig quer denkt.
Eine einfache Lösung, die aber fantastisch funktioniert! :)

Danke!

0 new messages