regular - regexp mysql php
Cómo regex en una consulta sql (2)
Creo que puedes usar REGEXP lugar de LIKE
SELECT trecord FROM `tbl` WHERE (trecord REGEXP ''^ALA[0-9]'')
Tengo una tarea simple donde necesito buscar un registro comenzando con caracteres de cadena y un dígito después de ellos. Lo que estoy intentando es esto
SELECT trecord FROM `tbl` WHERE (trecord LIKE ''ALA[d]%'')
Y
SELECT trecord FROM `tbl` WHERE (trecord LIKE ''ALA[0-9]%'')
Pero ambas consultas siempre devuelven un registro null
trecord
-------
null
Donde como si ejecutara la siguiente consulta
SELECT trecord FROM `tbl` WHERE (trecord LIKE ''ALA%'')
vuelve
trecord
-------
ALA0000
ALA0001
ALA0002
Significa que tengo registros que comienzan con ALA y un dígito después,
EDITAR
Lo hago usando PHP MySQL y el motor innodb para ser específico.
En mi caso (Oracle), es WHERE REGEXP_LIKE(column, ''regex.*'')
. Ver here :
Función SQL
Descripción
REGEXP_LIKE
Esta función busca una columna de caracteres para un patrón. Utilice esta función en la cláusula WHERE de una consulta para devolver filas que coincidan con la expresión regular que especifique.
...
REGEXP_REPLACE
Esta función busca un patrón en una columna de caracteres y reemplaza cada aparición de ese patrón con el patrón que especifique.
...
REGEXP_INSTR
Esta función busca una cadena para una ocurrencia dada de un patrón de expresión regular. Usted especifica qué ocurrencia desea encontrar y la posición de inicio para buscar. Esta función devuelve un número entero que indica la posición en la cadena donde se encuentra la coincidencia.
...
REGEXP_SUBSTR
Esta función devuelve la subcadena real que coincide con el patrón de expresión regular que especifique.
(Por supuesto, REGEXP_LIKE solo coincide con las consultas que contienen la cadena de búsqueda, por lo que si desea una coincidencia completa, deberá usar ''^$''
para una coincidencia inicial ( ^
) y final ( $
), por ejemplo: ''^regex.*$''
.)