Comparar patrones en MySQL

MySQL admite operaciones de comparación de patrones que le permiten seleccionar filas sin aplicar un valor de comparación exacto. Para realizar estas comparaciones debe utilicar operadores especiales (LIKE y NOT LIKE) y especificar una cadena que contenga caracteres comodín. El carácter _ compara cualquier carácter y % compara cualquier secuencia de caracteres (incluidas secuencias vacías).

El siguiente patrón compara apellidos que comienzan con W o w:

mysql> SELECT last_name, first_name FROM president
-> WHERE last_name LIKE 'W%';

last_name first_name
Washington George
Wilson Woodrow

La consulta que se muestra en el siguiente fragmento de código ilustra un error habitual. La comparación es errónea porque no utiliza LIKE, sino un patrón con un operador de comparación aritmético:

mysql> SELECT last_name, first_name FROM president
-> WHERE last_name = 'W%';
Empty set (0.00 sec)

La única forma que tenemos de que funcione es que la columna contenga exactamente la caden W% o w%.

El siguiente patrón permite comparar apellidos que contengan W o w en cualquier parte, no sólo al principio:

mysql> SELECT last_name, first_name FROM president
-> WHERE last_name LIKE '%W%';

last_name first_name
Washington George
Wilson Woodrow
Eisenhower Dwight D.

El siguiente patrón compara apellidos de cuatro caracteres:

mysql> SELECT last_name, fist_name FROM president
-> WHERE last_name LIKE '___';

last_name first_name
Polk James K.
Taft William H.
Ford Gerald R.
Bush George H.W.
Bush George W.

Comparte