No MySQL, você pode usar
NOT LIKE
para realizar uma negação do LIKE
operador. Em outras palavras, NOT LIKE
retorna o resultado oposto para LIKE
. Se a string corresponder ao padrão fornecido, o resultado será
0
, caso contrário é 1
. O padrão não precisa necessariamente ser uma string literal. Esta função pode ser usada com expressões de string e colunas de tabela.
Sintaxe
A sintaxe fica assim:
expr NOT LIKE pat [ESCAPE 'escape_char']
Onde
expr
é a string de entrada e pat
é o padrão para o qual você está testando a string. O opcional
ESCAPE
cláusula permite que você especifique um caractere de escape. O caractere de escape padrão é \
, então você pode omitir esta cláusula se não precisar alterá-la. Este operador é o equivalente a fazer o seguinte:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Exemplo 1 – Uso básico
Aqui está um exemplo de como usar este operador em um
SELECT
demonstração:SELECT 'Charlie' NOT LIKE 'Char%';
Resultado:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
Neste caso, o valor de retorno é
0
o que significa que a string de entrada fez realmente correspondem ao padrão. Exemplo 2 – Comparado com LIKE
Aqui é comparado com
LIKE
:SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Resultado:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Exemplo 3 – Uma Sintaxe Equivalente
Como mencionado,
NOT LIKE
é o equivalente a usar o NOT
operador lógico contra o LIKE
operador. Aqui está o que quero dizer:SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Resultado:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Exemplo 4 – Um exemplo de banco de dados
O
LIKE
O operador geralmente é usado dentro de um WHERE
cláusula de um SELECT
declaração ao consultar um banco de dados. Portanto, NOT LIKE
pode ser usado da mesma forma. Quando usamos
NOT LIKE
dessa forma, ele restringe os resultados apenas aos registros que não correspondência, mas vemos os resultados reais (não apenas um 1
ou 0
). Aqui está um exemplo de como podemos usar esse operador em uma consulta de banco de dados:
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 | +----------+------------------------+
Nesse caso, foi uma consulta simples que retorna todos os artistas cujos nomes não comece com a letra B .
Aqui está a lista completa de artistas nessa tabela:
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 | +----------+------------------------+
Então, se removermos o
NOT
(ou seja, usamos apenas LIKE
) obtemos 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 | +----------+----------------+
Exemplo 5 – Fuga com o caractere de barra invertida
O caractere de barra invertida (
\
) pode ser usado para escapar de qualquer um dos caracteres curinga (_
e %
). Aqui está um exemplo de uma pesquisa com e sem o caractere 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 | +----------------+-------------+
Exemplo 6 – O ESCAPE
Cláusula
Você também pode usar o
ESCAPE
cláusula para especificar seu próprio caractere de escape personalizado. Aqui está um exemplo: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 | +----------+----------+
Exemplo 7 – Expressões Numéricas
Este operador pode ser usado em expressões numéricas. Aqui está um exemplo:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Resultado:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+