Roger: nach erstem zeichen suchen

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.

  1. 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

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
    1. 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