2010-09-14 25 views
5

Necesito escribir una consulta utilizando MYSQL REGEXP que me encontrará filas que tienen una determinada columna que comienza con 11 o 12, etc. Sé que puedo usar LIKE o LEFT (#### , 2) pero me gustaría usar la opción REGEXP. Mi datos se almacenan como 110001, 122122, etc. 130013a yMySQL REGEXP para números que comienzan con

EDIT 1:

Para hacer más claro, me gustaría expresar

SELECT * FROM table WHERE column LIKE '11%' or column LIKE '12%' or column LIKE '30%'"  

con REGEXP

Gracias!

+3

Si el valor comienza con 11 o 12, LIKE tendrá un mejor rendimiento que REGEXP. Mala práctica para codificar lo que le gusta, vs lo que funciona mejor ... –

+0

¿Qué quiere decir con "11 o 12, etc."? ¿Quiere decir algo que comience con dos dígitos? ¿Algo que empiece con 1 seguido de otro dígito? ¿dos dígitos excepto cero? ¿Algo más? –

+0

Wow, hombre, ustedes son rápidos. Quise decir que solo necesito filas que tengan la columna 1 comenzando con 11, o 12, o 32, o cualquier combinación de 2 dígitos que arroje a ¡Gracias! – pistolshrimp

Respuesta

15

empate registros que comienzan con cualquiera de los dos dígitos que puede utilizar:

SELECT * 
FROM yourtable 
WHERE yourcolumn REGEXP '^[0-9][0-9]'; 

Si sólo desea permitir filas empezando por 11, 12 o 30 entonces se podría usar esto:

SELECT * 
FROM yourtable 
WHERE yourcolumn REGEXP '^(11|12|30)'; 

Esto no podrá usar un índice en la columna, por lo que puede ser más lento que usar LIKE.

+0

Mark, Gracias pero esto no es lo que estoy buscando. Necesito algo como "SELECCIONAR * DE LA tabla DONDE la columna TIENE GUSTO de '11% 'o una columna como '12%' o una columna como '30% '", expresada con REGEXP. – pistolshrimp

+0

Mark, gracias. Me siento como un idiota :) – pistolshrimp

Cuestiones relacionadas