2011-01-21 14 views
5

Quiero utilizar una instrucción CASE que utiliza REGEXP. Actualmente estoy haciendo algo como esto:Sentencia MySQL CASE y REGEXP

SELECT NAME, 
CASE INFO 
    WHEN 'not cool' THEN 'Not Cool' 
    WHEN 'very cool' THEN 'Cool' 
ELSE INFO 
END AS INFO 
FROM INFO_TABLE 

¿Hay alguna manera de utilizar REGEXP en la declaración inicial para hacer que la condición actúan como una expresión regular? En teoría, esto es lo que quiero, lo que no funciona:

SELECT NAME,  
CASE INFO REGEXP 
    WHEN 'not cool' THEN 'Not Cool' 
    WHEN 'very cool' THEN 'Cool' 
ELSE INFO 
END AS INFO 
FROM INFO_TABLE 

quiero 'no está bien' y 'muy cool' como expresiones regulares. Espero que sea lo suficientemente claro.

Respuesta

14

probar esto

select name, 
case 
    when info regexp 'not cool' then 'Not Cool' 
    when info regexp 'very cool' then 'Cool' 
else 
    info 
end 
    as info 
from INFO_TABLE; 
+0

+1: me Beat de 54 segundos. –

+0

Excelente, supongo porque tuve el "INFO" adicional justo después del caso, ¡realmente me equivoqué! +1 – bjo

0

No sé si hay expresiones regulares, pero hay wilcards que se pueden utilizar con LIKE.

El comodín% le proporciona cualquier cantidad de caracteres. El comodín _ te otorga un solo carácter.

Ejemplo:

SELECT email FROM people WHERE email LIKE '%harvard.edu' 
+0

MySQL ha tenido REGEXP desde ~ 4.x: http://dev.mysql.com/doc/refman/4.1/en/regexp.html –

+0

Oh, gracias. Y veo que Oracle acaba de obtener expresiones regulares con el lanzamiento de 10g :-) – ktm5124

Cuestiones relacionadas