Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Zahlen Formatieren MS SQL

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von dsnakas, 26 August 2013.

  1. dsnakas

    dsnakas Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru


    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.
     
  3. dsnakas

    dsnakas Benutzer

    wenn ich ehrlich bin verstehe ich nicht ganz was du da machst. Könntest du dies nochmal erklären?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  5. dsnakas

    dsnakas Benutzer

    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
    ;
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Hauptkritik an Deiner 'Lösung' ist die unsinnige Redundanz und verbunden damit die Gefahr der Inkonsistenz.

    http://www.tech-recipes.com/rx/30469/sql-server-how-to-left-pad-a-number-with-zeros/
     
  7. ukulele

    ukulele Datenbank-Guru

Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden