nach erstem zeichen suchen
Roger
- datenbank
hallo!
ich möchte aus einer mysql datenbank namen sortiert ausgeben lassen.
momentan mach ich dass so ($id enthält einen anfangsbuchstaben):
select * from db_user where left(user_name, 1) like '$id' order by user_name
wenn jetzt $id = a ist, dann werden alle user ausgegeben, die mit a anfangen.
jetzt möchte ich aber das ganze verallgemeinern und möchte alle user von a-d ausgeben. wie mach ich das am besten?
desweiteren möchte ich das auf sonderzeichen anwenden, da viele usernamen mit zb. zahlen (das würde mir für den anfang auch reichen) anfangen.
weiss jemand rat?
danke!
gruß.
roger.
Hallo
select *
16.14. Warum soll ich nicht SELECT * schreiben?
http://www.dclp-faq.de/q/q-sql-select.html
jetzt möchte ich aber das ganze verallgemeinern und möchte alle user von a-d ausgeben. wie mach ich das am besten?
Dann müsstest du deine Query entsprechend zusammenbauen:
SELECT irgendwas FROM db_user WHERE LEFT(user_name, 1) LIKE 'a' OR LEFT(user_name, 1) LIKE 'b' [...] ORDER BY user_name
Du kannst die Query ja in einer for-Schleife aufbauen, dann wäre nach der Eingabe der Grenzen (zB. a und t) das ganze einfach zu handhaben:
$sql = "SELECT irgendwas FROM db_user WHERE ";
for ($c = $anfngsbuchstabe; $c < $endbuchstabe; $c++)
$sql .= "LEFT(user_name, 1) LIKE '$c' OR ";
$sql.= "LEFT(user_name, 1) LIKE 'b' [...] ORDER BY user_name";
Dann hast du alle Buchstaben da drinne stehen. Ich weiß nicht ob's geht, aber vielleicht ist auch sowas möglich:
SELECT irgendwas FROM db_user WHERE LEFT(user_name, 1) >= '$anfangsbuchstabe' AND LEFT(user_name, 1) <= '$endbuchstabe' ORDER BY user_name
desweiteren möchte ich das auf sonderzeichen anwenden, da viele usernamen mit zb. zahlen (das würde mir für den anfang auch reichen) anfangen.
IMHO sind Zahlen keine Sonderzeichen ;)
Schau mal in eine ASCII-Tabelle, wo die Zahlen stehen. Wenn diese vor oder nach den Buchstaben stehen, so sollte es kein Problem sein, die for-Schleife entsprechend anzupassen. Ansonsten musst du dir da nochmal was einfallen lassen, vielleicht einen zweiten Bereich so gestalten?
Grüße
David
Hi, hallo
16.14. Warum soll ich nicht SELECT * schreiben?
http://www.dclp-faq.de/q/q-sql-select.html
Warum sollte man nicht LIKE verwenden? (ohne Link) ein fehler verbessert, einen anderen übersehen ;-)
du/er frag(s)t ja nur das erste Zeichen ab, da macht ein LIKE überhaupt keinen Sinn.
Wenn MySQL den IN Operator vernünftig behandeln würde, so wie richtige Datenbanksysteme, dann wäre das sicher nicht so kompliziert, aber ohne IN wird das ein (viel zu) langes SQL Statement.
Tschau, tschüß,
Frank