Walter: Numerische Felder Nullen nicht abschneiden

Hallo!

Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.

Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?

Danke im voraus!

Walter

  1. Hi,

    nimm Feldtyp

    varchar(irgendwas)

    oder irgendeine

    text - Option

    Sollte funktionieren. Guck halt genau was du brauchst bzw. was gespeichert werden soll um die Tabelle nicht großartig aufzublähen!

    Bis denne

    Botix

    1. Hi!

      Eben wird sie dadurch aufgebläht. Zudem wird die Tabelle sehr groß und somit der Zugriff zu langsam.

      Gibt es nicht eine andere Möglichkeit?

      Walter

      1. hi,

        Gibt es nicht eine andere Möglichkeit?

        nein.
        eine zahl in ihrer internen speicherung hat keine führenden nullen.

        gruss,
        wahsaga

  2. Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.

    Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?

    http://dev.mysql.com/doc/mysql/de/Column_types.html du findest dort zerofill. Aber ich befürchte das wird dir nicht weiterhelfen.
    Telefonnummern werden aber auch üblicherweise als char abgespeichert.

    Struppi.

  3. hallö,

    Wie schaffe ich es das im Feld 0043 steht und nicht die Nullen abgeschnitten werden?

    ne frage zum problem: die option zerofill wird wohl bekannt sein. da vorwahlen aber unterschiedlich lang sind, liegt das problem wohl in beispielsweise 000043 statt 0043. richtig?!

    dafür fallen mir nur tricks ein. am einfachsten wäre das speichern ohne führende nullen. die sind ja sehr einfach in der ausgabe wieder voranzustellen.

    grüße aus Leipzig
    willie.de

    --
    If looks could kill they probably will.
    ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
    http://www.peter.in-berlin.de/projekte/selfcode/
    1. hi,

      dafür fallen mir nur tricks ein. am einfachsten wäre das speichern ohne führende nullen. die sind ja sehr einfach in der ausgabe wieder voranzustellen.

      und in welcher anzahl?

      gruss,
      wahsaga

      1. hallö,

        und in welcher anzahl?

        nun ja, da halte ich es für nicht umständlich und für das durchsuchen der db eher günstig, zwei felder anzulegen für nat./int. vorwahlen - analog zu realen speichervorgängen (schreiben ins adressheftchen etc.)

        grüße aus Leipzig
        willie.de

        --
        Nun freilich starren Sinnes zu behaupten, dass das, was ich gesprochen habe, auch unbedingte Wahrheit sei, das schickt sich nicht für einen, der zu denken pflegt. - Platon
        ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
        http://www.peter.in-berlin.de/projekte/selfcode/
        1. hallö nochmal,

          da halte ich es für nicht umständlich und für das durchsuchen der db eher günstig, zwei felder anzulegen...

          das ermöglicht auch das verwenden des international üblichen zeichnens '+' statt '00'. diese notation bezieht ein, dass aus manchen ländern (zb. Spanien) ein alternativer präfix für internationale verbindungen gewählt werden muss.

          grüße aus Leipzig
          willie.de

          --
          ss:| zu:} ls:# fo:| de:] va:} ch:? sh:( n4:( rl:° br:> js:| ie:% fl:( mo:}
          http://www.peter.in-berlin.de/projekte/selfcode/
  4. Hi,

    Also ich möchte eine Vorwahl speichern, aber als numerisches Feld, da MySQL diese Felder schneller überprüft.

    Nicht jede Ziffernfolge ist eine Zahl.

    Eine Zahl hat einen Wert - dieser ist unabhängig von seiner Repräsentation. 255 und 2.55e2 und 0xFF stellen alle denselben Wert, also dieselbe Zahl dar.
    Führende Nullen vor dem Komma sowie abschließende Nullen nach dem Komma verändern den Wert nicht.

    Eine Telefonnummer ist eher eine Ziffernfolge, aber auf keinen Fall eine Zahl.

    Denn die Anzahl der führenden Nullen ist eben nicht egal.

    Ganz abgesehen davon gibt es Länder, bei denen für Auslandsgespräche nicht zwei Nullen (sondern eine andere Ziffernfolge) vorausgewählt werden müssen.
    Daher hat es sich eingebürgert, die Landesvorwahl ohne die führenden Nullen, dafür aber mit einem '+', das die Ziffernfolge für Auslandsgespräche repräsentiert, darzustellen.
    Also z.B. +49 für Deutschland.

    Auch andere Zeichen können sinnvoll sein, z.B. ein '-' zwischen der Nummer des Hauptanschlusses und der Nummer der Nebenstelle.

    Auf die Art kann jemand, der die Nummer einer Nebenstelle bekommen hat, jederzeit auch die Zentrale erreichen (einfach alles hinter '-' durch 0 ersetzen)

    Eine Telefonnummer ist also eine Zeichenfolge, nicht nur eine Ziffernfolge.
    Aus den genannten Gründen ist es unsinnig, für diese Zeichenfolge ein numerisches Feld zu benutzen.

    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.