2009-06-26 10 views
12

estoy añadiendo algunas nuevas características para un pequeño proyecto que estoy trabajando y uno de ellos es la paginación alfa que se parece aFetch filas en primer carácter no alfanumérico es

# 0-9 ABCDE .. . XYZ

que puedo pedir fácilmente los elementos por su primera letra de usar algo como

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

Agrupación de todo lo que comienza con un número y todos los otros personajes es una Poco más difícil, supongo que tendría que usar MySQLs REGEXP.

Para que quede claro, necesito ayuda para crear dos consultas que recuperar todas las filas donde

  • el primer carácter de una columna es numérica
  • el primer carácter de una columna no es alfanumérico

Respuesta

33

El primer carácter es numérico:

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

Primera charact er no es alfanumérico:

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

(Tenga en cuenta que esto es distinto de NOT REGEXP ^[0-9A-Za-z], ya que parece que única desea hacer coincidir cuando hay es, de hecho, un primer carácter.)

es probable que pueda sustituir [^[:alnum:]] por [^0-9A-Za-z], pero no lo he probado. Puede sin duda [[:digit:]] sustituto para [0-9], pero es más largo. :-)

Ver también MySQL REGEXP Reference.

Cuestiones relacionadas