2010-11-02 90 views

Respuesta

12

Su primera consulta utiliza like operador, pero no utiliza ningún comodines. Por lo que es el equivalente a:

select id from tab where id = '000'; 

que enumera sólo aquellos id 's donde id es 000.

La segunda consulta utiliza regex operador y que enumera las filas donde id tiene 000cualquier lugar en ella.

Ejemplo: Se va a enumerar estas id 's: 1000, 2000, 000, 0001

Para hacer su primera consulta se comportan igual que el segundo tendrá que utilizar comodín % que coincide con cero o más caracteres:

select id from tab where id like '%000%'; 

para hacer su segunda consulta se comporta como el puño que tendrá que utilizar el ancla de partida (^) y el ancla de extremo ($):

select id from tab where id regex '^000$'; 
+0

Para agregar a esto: * habría * diferencias si tus consultas fueran '... como '000%'' y ''... como' 000_'' y' ... regex '000 [[: alnum:]] + ''y ... entenderás la idea;) – FrustratedWithFormsDesigner

3

Sólo en caso de que quería decir la primera instrucción a ser:

select id from tab where id like '%000%'; 

Eso significa: nada (o nada), seguidos de '000', seguido de nada (o nada) .

Esto es exactamente lo que id regex '000' hace.

Básicamente, LIKE hace coincidencias de comodines muy simples, y REGEX es capaz de conseguir coincidencias de comodines muy complicadas.

De hecho, las expresiones regulares (REGEX) son tan capaces que son [1] un estudio completo en sí mismas [2] una manera fácil de introducir errores muy sutiles. Que te diviertas.

1

El operador como permite especificar comodines utilizando el operador %.

Si, por ejemplo, tiene que especificar todas las palabras que comienzan con el carácter un, puede hacerlo utilizando el valor "a%". También podría especificar palabras terminando con una cadena de caracteres. P.ej. las palabras que terminan con ing se pueden especificar mediante "% ing"

También podría haber parámetros especificando columnas que contienen valores que contienen una determinada cadena. P.ej.las palabras que contienen los caracteres peces se pueden especificar utilizando los parámetros como "% peces%"

Regexp (no creo que hay un operador de expresiones regulares), por otro lado permite especificar expresiones regulares al comparar valores en una columna con un parámetro. Por ejemplo, si necesita recuperar todos los registros que coincidan con un número de teléfono en el formato 555-666-7777, puede usar el parámetro "[[: digit:]] {3} \ - [[: digit:]] { 3} \ - [[: digit:]] {4} "

Por ej. SELECT * FROM agenda DONDE REGEXP teléfono "[[: digit:]] {3} \ - [[: digit:]] {3} \ - [[: digit:]] {4}"

favor vea http://dev.mysql.com/doc/refman/5.1/en/regexp.html para más información sobre el operador REGEXP.

Cuestiones relacionadas