Zahlen Formatieren MS SQL

dsnakas

Benutzer
Beiträge
20
Hi zusammen,

langsam werde ich hier zum Spammer ;)

Folgende Problem:

Feld mit Hausnummern muss immer 4stellig sein. Bisher ist alles dabei "2", "24", "244" es sollte aber so aussehen "0002", "0024", "0244"

wie bekomme ich das in MS SQL hin? Ich google schon aber finde nicht wirklich viel hilfreiches da es sich nicht um ein Datum handelt...

Gruß
Nakas
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.846
Hi zusammen,

langsam werde ich hier zum Spammer ;)

Folgende Problem:

Feld mit Hausnummern muss immer 4stellig sein. Bisher ist alles dabei "2", "24", "244" es sollte aber so aussehen "0002", "0024", "0244"

wie bekomme ich das in MS SQL hin? Ich google schon aber finde nicht wirklich viel hilfreiches da es sich nicht um ein Datum handelt...

Gruß
Nakas


Code:
test=# create table hausnummern (nummer int, check (nummer between 0 and 9999));
CREATE TABLE
Time: 0,924 ms
test=*# create view view_hausnummern as select to_char (nummer, '0999') from hausnummern;
CREATE VIEW
Time: 69,760 ms
test=*# insert into hausnummern values (2);
INSERT 0 1
Time: 11,876 ms
test=*# insert into hausnummern values (24);
INSERT 0 1
Time: 0,158 ms
test=*# insert into hausnummern values (244);
INSERT 0 1
Time: 0,172 ms
test=*# select * from view_hausnummern ;
 to_char
---------
  0002
  0024
  0244
(3 rows)


So würde ich es machen ... in PostgreSQL. Sollte aber in M$SQL ähnlich gehen.
 

akretschmer

Datenbank-Guru
Beiträge
9.846
wenn ich ehrlich bin verstehe ich nicht ganz was du da machst. Könntest du dies nochmal erklären?

Zuerst einmal definiere ich das als INT mit einer Check-Condition, daß die Werte zwischen 0 und 9999 liegen dürfen. Dann gebe ich 3 Werte ein, INT-Werte 2,24 und 244.
Ich habe außerdem einen VIEW definiert, der die Werte nach CHAR wandelt, und das im Format, daß es 4-stellig wird und führende Nullen hat - das war ja Dein Wunsch.
Gespeichert werden aber nur INT-Werte. Den VIEW kann man auch weglassen, dann eben im Select nach Char wanden und das Format dabei definieren.
 

dsnakas

Benutzer
Beiträge
20
Ich habe es ein wenig anders gelöst...zwar umständlich da es bestimmt einen anderen befehl wie "to_char" gibt....diesen habe ich aber nicht für ms sql gefunden.

Also habe ich einfach mal mit Update gearbeitet

Code:
update Tabelle_1
set Tabelle_1.HS_NR_Neu ='000'+Tabelle_1.HS_NR_Neu
where len (Tabelle_1.HS_NR_Neu) =1
go
;
update Tabelle_1
set Tabelle_1.HS_NR_Neu='00'+Tabelle_1.HS_NR_Neu
where len (Tabelle_1.HS_NR_Neu) =2
go
;
update Tabelle_1
set Tabelle_1.HS_NR_Neu='0'+Tabelle_1.HS_NR_Neu
where len (Tabelle_1.HS_NR_Neu) =3
go
;
 
Werbung:
Oben