En MySQL, puede usar NOT LIKE
para realizar una negación del LIKE
operador. En otras palabras, NOT LIKE
devuelve el resultado opuesto a LIKE
.
Si la cadena coincide con el patrón proporcionado, el resultado es 0
, de lo contrario es 1
.
El patrón no necesariamente tiene que ser una cadena literal. Esta función se puede utilizar con expresiones de cadena y columnas de tabla.
Sintaxis
La sintaxis es así:
expr NOT LIKE pat [ESCAPE 'escape_char']
Donde expr
es la cadena de entrada y pat
es el patrón contra el que está probando la cadena.
El ESCAPE
opcional cláusula le permite especificar un carácter de escape. El carácter de escape predeterminado es \
, por lo que puede omitir esta cláusula si no necesita cambiarla.
Este operador es el equivalente a hacer lo siguiente:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Ejemplo 1:uso básico
Aquí hay un ejemplo de cómo usar este operador en un SELECT
declaración:
SELECT 'Charlie' NOT LIKE 'Char%';
Resultado:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
En este caso, el valor de retorno es 0
lo que significa que la cadena de entrada did en realidad coincide con el patrón.
Ejemplo 2:Comparado con LIKE
Aquí se compara con LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Resultado:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Ejemplo 3:una sintaxis equivalente
Como se mencionó, NOT LIKE
es el equivalente de usar el NOT
operador lógico contra LIKE
operador. Esto es lo que quiero decir:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Resultado:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Ejemplo 4:un ejemplo de base de datos
El LIKE
El operador se usa a menudo dentro de un WHERE
cláusula de un SELECT
declaración al consultar una base de datos. Por lo tanto, NOT LIKE
se puede usar de la misma manera.
Cuando usamos NOT LIKE
de esta manera, reduce los resultados a solo aquellos registros que no coinciden, pero vemos los resultados reales (no solo un 1
o 0
).
Aquí hay un ejemplo de cómo podemos usar este operador dentro de una consulta de base de datos:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Resultado:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | +----------+------------------------+
En este caso, fue una consulta simple que devuelve todos los artistas cuyos nombres no empezar con la letra B .
Aquí está la lista completa de artistas en esa tabla:
SELECT ArtistId, ArtistName FROM Artists;
Resultado:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 4 | Buddy Rich | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 11 | Black Sabbath | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+------------------------+
Entonces, si eliminamos el NOT
(es decir, solo usamos LIKE
) obtenemos este resultado:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Resultado:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Ejemplo 5:escapar con el carácter de barra invertida
El carácter de barra invertida (\
) se puede utilizar para escapar de cualquiera de los caracteres comodín (_
y %
). Aquí hay un ejemplo de una búsqueda de este tipo con y sin el carácter de escape:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Resultado:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Ejemplo 6:el ESCAPE
Cláusula
También puedes usar el ESCAPE
cláusula para especificar su propio carácter de escape personalizado. He aquí un ejemplo:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Resultado:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Ejemplo 7:Expresiones numéricas
Este operador se puede utilizar en expresiones numéricas. He aquí un ejemplo:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Resultado:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+