2009-06-26 4 views
12

ich ein paar neue Features zu einem kleinen Projekt bin Hinzufügen ich arbeite und einer von ihnen ist alpha Paginierung, die wieReihen holen, wo erste Zeichen nicht alphanumerische ist

# 0-9 ABCDE sieht .. . XYZ

ich leicht Elemente in ihren ersten Buchstaben etwas wie

SELECT * FROM ... WHERE name LIKE 'A%' ... 

Gruppierung alles, was mit einer Zahl beginnt und alle anderen Zeichen ist eine Verwendung holen kann etwas schwieriger, ich nehme an, es müsste MySQL REGEXP verwenden.

Nur um klar zu sein, ich brauche Hilfe, die zwei Abfragen, die alle Zeilen holen, wo

  • das erste Zeichen einer Spalte
  • das erste Zeichen einer Spalte numerisch ist nicht alphanumerische

Antwort

33

Erstes Zeichen numerisch ist:

SELECT * FROM ... WHERE name REGEXP '^[0-9]'; 

Erste charact er ist nicht alphanumerische:

SELECT * FROM ... WHERE name REGEXP '^[^0-9A-Za-z]'; 

(Beachten Sie, dass diese von NOT REGEXP ^[0-9A-Za-z] unterscheidet, weil Sie zu scheinen nur wollen passen, wenn es ist in der Tat ein erstes Zeichen.)

Sie können sich wahrscheinlich Ersatz [^[:alnum:]] für [^0-9A-Za-z], aber ich habe es nicht getestet. Sie können sicherlich ersetzen [[:digit:]] für [0-9], aber es ist länger. :-)

Siehe auch die MySQL REGEXP Reference.

Verwandte Themen