Manfred: Stringlänge prüfen?

Hallo,

sorry, bin sql Anfänger...

Ich habe in einer Adressdatenbank eine Anzahl Datensätze mit
4-stelliger statt 5-stelliger PLZ.

Wie kann ich auf die Länge von PLZ abfragen???

select * from  firmen where plz ......

Bitte um kurze Info.
Vielen Dank

Manfred

PS.: gibt es zum SQL-Syntax auch etwas bei SELFHTML???

  1. Hallo,

    sorry, bin sql Anfänger...

    Ich habe in einer Adressdatenbank eine Anzahl Datensätze mit
    4-stelliger statt 5-stelliger PLZ.

    Wie kann ich auf die Länge von PLZ abfragen???

    select * from  firmen where plz ......

    mach einfach 4 Fragezeichen. Ein Fragezeichen ist Platzhalter für genau 1 anderes x- beliebiges zeichen

    Bitte um kurze Info.
    Vielen Dank

    Manfred

    PS.: gibt es zum SQL-Syntax auch etwas bei SELFHTML???

    mfg

    stefan

    1. Hallo,

      sorry, bin sql Anfänger...

      Ich habe in einer Adressdatenbank eine Anzahl Datensätze mit
      4-stelliger statt 5-stelliger PLZ.

      Wie kann ich auf die Länge von PLZ abfragen???

      select * from  firmen where plz ......

      mach einfach 4 Fragezeichen. Ein Fragezeichen ist Platzhalter für genau 1 anderes x- beliebiges zeichen

      Danke für die Schnelle Antwort, geht aber nicht...
      select * from firmen where plz ="????"
      gibt kein Ergebnis während
      select * from firmen where plz<3000 and plz>1000
      über 600 Treffer ergibt

      noch ne Idee?

      tänx
      Manfred

      Bitte um kurze Info.
      Vielen Dank

      Manfred

      PS.: gibt es zum SQL-Syntax auch etwas bei SELFHTML???

      mfg

      stefan

      1. Hallo,

        select * from firmen where plz ="????"

        Da prüfst du ja auch, ob es wirklich vier Fragezeichen sind. Müsste sein:
        ..plz LIKE '????'

        select * from firmen where plz<3000 and plz>1000

        Vorsicht! 5-stellige PLZ mit führender Null (ja, sowas gibt's) fallen da leicht mit ins Ergebnis.

        Grüße aus Würzburg
        Julian

        1. Hallo,

          select * from firmen where plz ="????"
          Da prüfst du ja auch, ob es wirklich vier Fragezeichen sind. Müsste sein:
          ..plz LIKE '????'

          select * from firmen where plz<3000 and plz>1000
          Vorsicht! 5-stellige PLZ mit führender Null (ja, sowas gibt's) fallen da leicht mit ins Ergebnis.

          Genau das ist ja das Problem.
          deswegen will ich ja diese Abfrage nicht benutzen:

          select firmenNr,plz from firmen where plz <3000 and PLZ>1000
            ergibt >600 Datensätze:

          10554-01  01309
          10708-01  1558
          10761-01  01855
          10769-01  01900
          10784-01  1277
          10827-01  01169

          also bleibt ja nur die Stringlänge,

          aber deine Variante mit LIKE '????' bringt leider auch 0 Datensätze
          :-(

          noch ne Idee????

          Danke Manfred

          Grüße aus Würzburg
          Julian

          1. select * from firmen where plz<3000 and plz>1000
            Vorsicht! 5-stellige PLZ mit führender Null (ja, sowas gibt's) fallen da leicht mit ins Ergebnis.

            Genau das ist ja das Problem.

            Bei Oracle:

            SELECT * FROM firmen
            WHERE to_number(plz)<3000 AND to_number(plz)>1000

            Sicher weiß einer der mySQL-Spezis hier die Entsprechung.

          2. Hallo.

            select firmenNr,plz from firmen where plz <3000 and PLZ>1000 AND substring(plz,1)!='0'

            Damit sollten PLZs mit führender Null ausgeschlossen sein.

            Mit etwas Glück hab ich jetzt in der Doku die richtige Stelle entdeckt: LENGTH(zeichenkette)

            Grüße aus Würzburg
            Julian

            1. Hallo.

              select firmenNr,plz from firmen where plz <3000 and PLZ>1000 AND substring(plz,1)!='0'

              Hallo Julian,

              mit einer kleien Änderung hat es geklappt:... substring(plz,1,1)!='0'

              Vielen herzlichen Dank
              Manfred

              jetzt gilt es nur noch den 79 Datensätzen die fehlende "0" zu verpassen.

              ciao
              Manfred

              Falls es dich interessiert, es geht um das Projekt www.optikersuchmaschine.de. kannst ja mal einen kleinen Blick drauf werfen. Danke nochmal!!!

              Damit sollten PLZs mit führender Null ausgeschlossen sein.

              Mit etwas Glück hab ich jetzt in der Doku die richtige Stelle entdeckt: LENGTH(zeichenkette)

              Grüße aus Würzburg
              Julian

              1. jetzt gilt es nur noch den 79 Datensätzen die fehlende "0" zu verpassen.

                UPDATE tabelle
                SET plz = '0' || plz
                WHERE substr(plz,1,1) <> '0'

                (wieder mal Oracle-Syntax, scusa ;-)

  2. Hallo Manfred,

    PS.: gibt es zum SQL-Syntax auch etwas bei SELFHTML???

    Jou, die Doku (http://www.mysql.com/doc/ bzw. http://www.mysql.de/doc/). die englische ist mit Userkommentaren und daher manchmal hilfreicher.

    Mag gerade keine Suchanfrage von mir nehmen, die Doku. :-(
    Daher auch keine konkrete Lösung. Das aber u.a. auch eine Substring-Funktion zur Verfügung steht, dürfte sich auch eine Suche nach Strinlänge lohnen. Ist aber jetzt Spekulation.

    Grüße aus Würzburg
    Julian

  3. Hallo,

    sorry, bin sql Anfänger...

    Ich habe in einer Adressdatenbank eine Anzahl Datensätze mit
    4-stelliger statt 5-stelliger PLZ.

    Wie kann ich auf die Länge von PLZ abfragen???

    select * from  firmen where plz ......

    Bitte um kurze Info.
    Vielen Dank

    Manfred

    Hallo zusammen,

    ich habe bei http://www.mysql.de/documentation/mysql/bychapter/manual.de_Tutorial.html#Pattern_matching
    eine gute Beschreibung gefunden, die absolut gut funktioniert:

    ... where plz like "____"       (4 Unterstriche für 4-stellig"

    Danke nochmal an alle, die mir geholfen haben!
    Gruß
    Manfred