Mortimer: 8-Zeichen lange Zahl mit führender Null = Varchar?

Hi

Ich habe Artikelnummern die teilweise mit führenden Nullen beginnen.
Wenn ich sie als Integer in my SQL Datenbank speicher verlieren sie die führenden 0 vor einem positivem wert (1-9).

aus 01004711 wird dann 01004711... ärgerlich.. aber verständlich.

Muss sie nun als Varchar in meine DB speichern oder gibt es eine Int-Status der die führenden Nullen mitspeichert?

ciao

  1. Hi,

    Ich habe Artikelnummern die teilweise mit führenden Nullen beginnen.
    Wenn ich sie als Integer in my SQL Datenbank speicher verlieren sie die führenden 0 vor einem positivem wert (1-9).

    aus 01004711 wird dann 01004711... ärgerlich.. aber verständlich.

    Na, dann sei doch froh, wenn sich nichts ändert! :-)

    Muss sie nun als Varchar in meine DB speichern oder gibt es eine Int-Status der die führenden Nullen mitspeichert?

    Kenne mich _damit_ zwar jetzt nicht aus, aber hast du keine Möglichkeit, sie als Strings zu speichern?

    Gruß
    Arx, der jetzt schlafen geht, weil er morgen eine Mathematik-Klausur schreibt ;-)

    --
    Do it yourSELF 'cause SELFmade is bestmade.
    Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
    Selfcode entschlüsseln: http://peter.in-berlin.de/projekte/selfcode/
    Selfcode-Info: http://emmanuel.dammerer.at/selfcode.html
    Für alle Forum-Neulinge:
    1.http://de.selfhtml.org/
    2.http://suche.de.selfhtml.org/ -> http://forum.de.selfhtml.org/archiv/
    3.http://forum.de.selfhtml.org/faq/ -> http://forum.de.selfhtml.org/cgi-bin/fo_post
  2. Hello, come stai?

    Ich habe Artikelnummern die teilweise mit führenden Nullen beginnen.
    Wenn ich sie als Integer in my SQL Datenbank speicher verlieren sie die führenden 0 vor einem positivem wert (1-9).

    Wenn Du die Artikel-Keys nun als Char(8) anspeicherst, dann kannst Du ja gar nicht mehr damit rechnen. Nun stell Dir doch mal vor, da wollte einer die Spaltensumme bilden ;-)

    Alles klar?

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Wenn Du die Artikel-Keys nun als Char(8) anspeicherst, dann kannst Du ja gar nicht mehr damit rechnen. Nun stell Dir doch mal vor, da wollte einer die Spaltensumme bilden ;-)

      Ehrlich gesagt: Ich wusste noch nie wozu die Einweisung dafür ist....

      Ich code nur für mich kleinere sachen die mir das arbeiten erleichtern... meisst speicher ich immer als varchar weil ich nicht verstehe wieso eine zahl nicht auch ein string sein darf...

      das hat man davon wenn man quereinsteiger ist und sich nie mit der materie beschäftigt hat... =/

      Aber hats du nun eine Lösung?
      Gibt es eine INT-Form die die nullen beibehält?

      ciao

      1. Hello Mortimer,

        Aber hats du nun eine Lösung?
        Gibt es eine INT-Form die die nullen beibehält?

        Du kannst die Darstellung auch noch in der Ausgabeeinheit ändern. In PHP z.B.

        echo subtsr('00000000'.$nummer,-8);

        Es gibt aber auch in MySQL eine Möglichkeit:

        select lpad(nr,8,'0') as nr from <tabelle> where <bedingung>;

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Gibt es ik Wikipedia was zum Thema...

          Ich denke... es ist Zeit sich doch mal PHP-Theorien zu befassen... *lacht*

          ... Ich kenne nichtmal den Unterschied wieso man manchmal FOr und manchmal WHILE benutzt... ... ich denke ich bin, wie ihr manchmal hier sagt, ein Hobbycoder ...

          Aber danke..

          grüsse aus dem (DSL-losen) Swisttal

          ciao

          1. Hello,

            Aber danke..

            Bitte, immer wieder gerne ;-)

            grüsse aus dem (DSL-losen) Swisttal

            Au. noch mit 9,6 kBoud  oder doch schon mit 54?

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
        2. Hi,

          echo subtsr('00000000'.$nummer,-8);

          printf('%08d', $nummer);

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hello Andreas,

            echo subtsr('00000000'.$nummer,-8);

            printf('%08d', $nummer);

            Ich musste an dich (und diese Lösung) denken, als ich meinen Beitrag schrieb ;-) Irgendwie verbinde ich bestimmte Lösungen immer mit den Leuten, die sie hier propagieren...

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
      2. Hallo!

        Gibt es eine INT-Form die die nullen beibehält?

        Nein, gibt es nicht, vorlaufende Nullen bei numerischen Daten keinen Sinn, wenn Du am Taschenrechner 4+2 ausrechnen willst und eingibst "000004" verschwinden daher die Nullen nach Drücken auf die Plus-Taste.

        Du könntest in der Artikeltabelle ein Feld mitführen indem Du die Maske eingibst, also zB. '00000000' um sie für die Formatierung zu verwenden.

        Zum Thema ist auch der Unterschied zwischen char und varchar interessant: http://dev.mysql.com/doc/mysql/de/CHAR.html.

        Beste Grüße
        Viennamade

        1. Hallo!

          Du könntest in der Artikeltabelle ein Feld mitführen indem Du die Maske eingibst, also zB. '00000000' um sie für die Formatierung zu verwenden.

          Meine Lösung macht natürlich nur dann Sinn, wenn die Artikelnummern unterschiedlich maskiert werden, wenn nicht, dann bitte das Posting von Tom berücksichtigen (die Syntax dort ist mir auch neu - Danke Tom).

          Beste Grüße
          Viennamade

  3. hi

    Muss sie nun als Varchar in meine DB speichern oder gibt es eine Int-Status der die führenden Nullen mitspeichert?

    Aus welchem Grund willst du denn deine Artikelnummer als Integer anlegen? Nummern als Integer zu speichern macht imho nur Sinn wenn du damit rechnen willst.
    Ich denke das Tom dir das auch sagen wollte als er dir das Spaltensummenbeispiel mit folgendem ";-)"-Simley brachte.

    Eine Artikelnummer ist genauso wie eine Postleitzahl keine Zahl im eigentlichen Sinne, sondern eine Nummernfolge mit der soweit mir bewußt in keinster Form gerechnet werden soll/kann/darf/muß.
    Und zum ASC oder DESC sortieren reicht Varchar auch.

    Mach dir also keinen Kopf und nimm Varchar, das ist schon die richtige Form für deine Artikelnummern.

    so long
    Ole
    (8-)>

  4. Hi,

    Ich habe Artikelnummern die teilweise mit führenden Nullen beginnen.
    Wenn ich sie als Integer in my SQL Datenbank speicher verlieren sie die führenden 0 vor einem positivem wert (1-9).

    MySQL kennt das Attribut ZEROFILL für integer-Spalten.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.