Nummer zweite und dritte Stelle
Sahra
- datenbank
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
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
74628646nicht 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
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
74628646nicht 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
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
Wow das war ja alles supi fix...
many danke...
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
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
74628646nicht 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