Sahra: Nummer zweite und dritte Stelle

Ola meine lieblingshelfer,

ich habe ein Problem. Bei 8 stelligen IDs soll ich nur die ausgeben die an zweiter und dritter Stelle keine 10 haben. Also

12454567
71625345
73107473
74628646

nicht die 4. Gibt es da einen sql Befehl für?

Danke
Sahra

  1. Ola meine lieblingshelfer,

    ich habe ein Problem. Bei 8 stelligen IDs soll ich nur die ausgeben die an zweiter und dritter Stelle keine 10 haben. Also

    12454567
    71625345
    73107473
    74628646

    nicht die 4. Gibt es da einen sql Befehl für?

    definiere "sql"

    annahme: die schmutzige variante ist sicher, das alles als string zu behandeln und mit substr() den betreffenden teil zu isolieren

    bei ganzzahlen bietet sich die möglichkeit mehrerer mathematischer operation

    den string durch 10.000 teilen und den rest verwerfen, dann prüfen ob der string ohne rest durch 10 teilbar ist

    wenn die zahl durch 10 teilbar ist, dieses durchführen und prüfen ob der rest 1 ist - ist der rest 1, sind stelle 3 und 4 "10"

    man möge ggf. auftretende logikfehler entschuldigen

    1. Hi und danke,

      ich denke auch SUBSTR ist die Lösung bei dem anderen weiß ich auch nicht wie man das alles in ein SQL Statement packt. Es ist eine mySQL Datenbank.

      WHERE SUBSTR(spaltenname,2,3)<>10

      ich weiß aber nicht wie man ungleich angibt und ob man da noch Klammern setzen muß.

      Cucu
      Sahra

      Ola meine lieblingshelfer,

      ich habe ein Problem. Bei 8 stelligen IDs soll ich nur die ausgeben die an zweiter und dritter Stelle keine 10 haben. Also

      12454567
      71625345
      73107473
      74628646

      nicht die 4. Gibt es da einen sql Befehl für?
      definiere "sql"

      annahme: die schmutzige variante ist sicher, das alles als string zu behandeln und mit substr() den betreffenden teil zu isolieren

      bei ganzzahlen bietet sich die möglichkeit mehrerer mathematischer operation

      den string durch 10.000 teilen und den rest verwerfen, dann prüfen ob der string ohne rest durch 10 teilbar ist

      wenn die zahl durch 10 teilbar ist, dieses durchführen und prüfen ob der rest 1 ist - ist der rest 1, sind stelle 3 und 4 "10"

      man möge ggf. auftretende logikfehler entschuldigen

      1. ich weiß aber nicht wie man ungleich angibt und ob man da noch Klammern setzen muß.

        http://dev.mysql.com/doc/refman/5.1/de/logical-operators.html

        1. Wow das war ja alles supi fix...
          many danke...

      2. Hallo,

        Hi und danke,

        kein TOFU bitte.

        ich denke auch SUBSTR ist die Lösung bei dem anderen weiß ich auch nicht wie man das alles in ein SQL Statement packt. Es ist eine mySQL Datenbank.

        WHERE SUBSTR(spaltenname,2,3)<>10

        ich weiß aber nicht wie man ungleich angibt

        das steht im Handbuch.

        und ob man da noch Klammern setzen muß.

        Muss? Nein, man kann aber. In Deinem Fall würde ich allerdings nur Leerzeichen verwenden, um die WHERE-Klausel lesbarer zu gestalten, dafür aber noch die CAST-Funktion, um explizit in CHAR umzuwandeln:

        WHERE SUBSTR([link:http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast@title=CAST(spaltenname AS CHAR)], 2, 3) <> 10

        Bitte bedenke, dass MySQL für diese Einschränkung keinen Index verwenden kann und daher die Tabelle komplett lesen muss.

        Freundliche Grüße

        Vinzenz

  2. Mahlzeit Sahra,

    ich habe ein Problem. Bei 8 stelligen IDs

    Spaltentyp?

    soll ich nur die ausgeben die an zweiter und dritter Stelle keine 10 haben.

    Wie kann an einer bestimmten Stelle einer Zahl (= einer Ziffer) eine 10 stehen? Meinst Du "an der zweiten Stelle eine 1 UND an der dritten Stelle eine 0"?

    Also

    12454567
    71625345
    73107473
    74628646

    nicht die 4.

    Die 1., 2. und 3. aber schon? Wieso das? Ich sehe da nirgendwo "an der zweiten und dritten Stelle eine 10" ...

    Du solltest Dein Kriterium besser und vor allem eindeutig definieren.

    Gibt es da einen sql Befehl für?

    Speziell für "an der zweiten und dritten Stelle keine 10"? Nein. Es gibt aber in den verschiedenen SQL-Dialekten sehr viele Funktionen, mit denen man Werte zerlegen, manipulieren, überprüfen usw. kann - suit und Vinzenz haben Dir bereits hilfreiche Tipps gegeben.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|