2009-12-03 11 views
5

Estoy tratando de encontrar una forma de hacer coincidir una consulta con una expresión regular en una base de datos. Por lo que yo puedo decir (aunque no soy experto), mientras que la mayoría de los DBMS como MySQL tienen un regex option para la búsqueda, sólo se puede hacer algo como:¿Coincide una consulta con una expresión regular en SQL?

Encuentra todas las filas de la columna 1 que coinciden con la expresión regular en mi consulta.

Lo que yo quiero ser capaz de hacer es lo contrario, es decir .:

Buscar todas las filas en la columna 1 de tal manera que la expresión regular en la Columna 1 coincide con mi consulta.

Ejemplo sencillo - decir que tenía una base de datos estructurada de esta manera:

+----------+-----------+ 
| Column 1 | Column 2 | 
+----------+-----------+ 
| [a-z]+ | whatever | 
+----------+-----------+ 
| [\w]+ | whatever | 
+----------+-----------+ 
| [0-9]+ | whatever | 
+----------+-----------+ 

Así que si me preguntó "perro", me gustaría que vuelva las filas con [az] + y [\ w] +, y si consulté , devolvería la fila con [0-9] +.

Si conoce una forma de hacerlo en SQL, un pequeño ejemplo SELECT o un enlace con un ejemplo sería muy apreciado.

+1

Oracle no apoyó de expresiones regulares hasta 10g, SQL Server ha añadido soporte en V2005. No hay una sintaxis estándar ANSI de la que tenga conocimiento, es regex, pero la (s) función (es) utilizada (s) para hacerlo será diferente entre los proveedores. –

Respuesta

4

Para MySQL (y puede haber otras bases de datos también):

SELECT * FROM table WHERE "dog" RLIKE(`Column 1`) 
+0

¡Genial! Gracias por su respuesta rápida. – Pete

+0

Solo una actualización rápida: descubrí que solo funcionaba en MySQL si estructuraba la consulta de la siguiente manera: SELECCIONAR * FROM tabla WHERE "perro" RLIKE (Columna 1) – Pete

+0

¿Cómo harías esto en la interfaz de consulta de Active Record de Rails? ? – Ephraim

Cuestiones relacionadas