SQL-Abfrage "LIKE" nur Zahlen ...
Dominik
- php
Hallo,
ich hab ein einer SQL Abfrage als Filter das ABC gesetzt - kann also durch Klicken auf "A" alle Namen aus einer Datenbank ausgeben, die mit "A" beginnen.
SELECT * FROM daten
WHERE name LIKE 'a%'
Gibt es hier eine Möglichkeit eine Abfrage zu machen wo alle Namen ausgegeben werden die mit einer beliebigen Zahl beginnen?
Also: SELECT * FROM daten
WHERE name LIKE '0-9%'
oder muss ich da für jede Zahl eine Extra Abfrage machen?
Vielen Dank!
Grüße,
Dominik
Huhu Dominik
Gibt es hier eine Möglichkeit eine Abfrage zu machen wo alle Namen ausgegeben werden die mit einer beliebigen Zahl beginnen?
Welcher Name fängt den mit einer Zahl an?
Ok, es gibt 007, die 7Zwerge, 1tein und vermutlich noch ein paar andere ;-)
Du kannst das z.B. mit "REGEXP" lösen, ungefähr so
... WHERE theName
REGEXP '[1]' ...
http://dev.mysql.com/doc/mysql/en/regexp.html
oder mit "substring", ungefähr so
... WHERE substring(theName
,0,1) IN ('0', '1', '2' , ... , '9') ...
http://dev.mysql.com/doc/mysql/en/string-functions.html
mehr fällt mir zumindest im Moment nicht ein.
Mmmmh, wäre mal interessant zu testen welche Variante wohl schneller ist
Viele Grüße
lulu
0-9 ↩︎
Hey Lulu,
Cool! Danke für die schnelle Antwort. Hm ... ein Name fängt nicht mit einer Zahl an, aber in dem Feld stehen unter anderem auch Firmennamen.
Deshalb wäre folgende Abfrage sogar noch besser:
WHERE name "beginnt mit alles ausser A-Z"
dann wären Sonderzeichen usw. auch mit eingeschlossen. Gibt es da auch eine Lösung für?
Habe mal Lösung 1 getestet. Das scheint zu funzen. Aber für nen Speedtest sind meine daten noch zu gering :(
VIELEN DANK!
Dominik
yo,
dann wären Sonderzeichen usw. auch mit eingeschlossen. Gibt es da auch eine Lösung für?
ja, du benutzt entweder reguläre ausdrücke oder aber anstelle von IN den NOT IN Operator quasi das erste zeichen nicht von A-Z, wobei man dabei auch noch die upper funktion in betracht ziehen sollte, damit klein und grossschreibung keine rolle spielt.
Habe mal Lösung 1 getestet. Das scheint zu funzen. Aber für nen Speedtest sind meine daten noch zu gering :(
die frage ist, welches dbms du benutzt, sicherlich mysql. und dann ist die frage, ob du einen geeigneten index gesetzt hast. spalten, die in der where klausel abgefragt werden, sind immer gute kandidaten dafür. was allerdings auch gut sein kann, dass durch die verwendung von funktionen der index unter mysql ausgehebelt wird, da es keine funktionalen indexe kennt.
Ilja
Hi,
Gibt es hier eine Möglichkeit eine Abfrage zu machen wo alle Namen ausgegeben werden die mit einer beliebigen Zahl beginnen?
also alle Strings, die größer als '0' und kleiner als ':' sind.
cu,
Andreas