O operador T-SQL LIKE é uma das adições mais úteis à declaração SQL SELECT. Esta última recupera um conjunto de resultados, e você pode facilmente filtrar os resultados usando operadores de igualdade e a cláusula WHERE para selecionar determinadas condições específicas. Mas e quanto às vezes em que você pode querer selecionar linhas com base em valores parciais? É aí que entra em jogo a declaração SQL LIKE, e eu vou te mostrar como usá-la neste tutorial.
Sintaxe SQL LIKE
Você pode ver a sintaxe básica do operador LIKE na seguinte listagem:
- Primeiro, você fornece a expressão que deseja corresponder. Isso geralmente é um nome de coluna.
- Em seguida, você pode opcionalmente especificar NOT para fazer esta expressão funcionar para todas as condições que não correspondam. Usar a condição NOT LIKE não é a forma mais comum de usar o operador LIKE.
- Você então precisa fornecer o padrão para correspondência. Isso pode ser um literal ou pode incluir caracteres wildcard que tornam o processo de correspondência muito mais flexível.
- Isso pode opcionalmente ser seguido por um caractere de Escape que pode ser usado para ajudar a procurar caracteres wildcard.
- Se qualquer um dos argumentos não for do tipo de dado string de caracteres, o SQL Server o converterá para um tipo de dado de string de caracteres.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
SQL LIKE e caracteres wildcard
Antes de mergulharmos em detalhes, você deve saber que a correspondência de padrão SQL LIKE pode incluir caracteres regulares bem como caracteres wildcard. Os caracteres wildcard permitem selecionar uma string de caracteres específica que corresponde ao padrão wildcard.
Para a correspondência de padrão, os caracteres regulares devem corresponder aos caracteres especificados na string de caracteres. No entanto, os caracteres wildcard podem corresponder a qualquer fragmentos da string de caracteres. Usar caracteres wildcard torna o operador LIKE mais flexível do que os operadores de comparação de string de igualdade (= e !=) regulares.
O operador LIKE aceita quatro tipos diferentes de caracteres wildcard. Cada caractere wildcard executa uma função de comparação diferente, e você pode saber mais na tabela a seguir.
Wildcard character | Description |
% (percent sign) | Any string of zero or more characters. |
_ (underscore) | Any single character. |
[ ] | Any single character within the specified range [a-f] or set [abcdef]. |
[^] | Any single character not within the specified range [^a-f] or set [^abcdef]. |
O operador LIKE retorna VERDADEIRO se a expressão_de_correspondência corresponder ao padrão especificado. Vamos usar alguns exemplos para mostrar como usar o operador SQL LIKE com o banco de dados de exemplo AdventureWorksLT2019.
Correspondência de vários caracteres wildcard
O caractere curinga % representa zero ou mais caracteres. A seguinte consulta recupera todas as linhas da tabela ‘Person.Person’ onde ‘LastName’ começa com a letra ‘A’.
USE AdventureWorksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE LastName LIKE 'A%';

Correspondência de caractere curinga de um único caractere
O caractere curinga _ representa um único caractere. O exemplo de consulta a seguir recupera todas as linhas da tabela ‘SalesLT.Product’ onde ‘Name’ possui exatamente quatro caracteres de qualquer tipo seguidos de um hífen.
USE AdventureWorksLT2019; SELECT ProductID, Name FROM SalesLT.Product WHERE Name LIKE '____-%';

Correspondência de caractere curinga para um conjunto de caracteres
O [] caractere curinga representa qualquer caractere único dentro do intervalo ou conjunto especificado. A seguinte instrução SQL recupera todas as linhas da tabela ‘SalesLT.Product’ onde o ‘Name’ começa com ‘B’, ‘C’ ou ‘D’.
USE AdventureWorksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[BCD]%';

Correspondência curinga para um intervalo de caracteres
Você também pode usar a cláusula LIKE para suportar pesquisas de intervalo. Esta consulta recupera os sobrenomes que terminam com ‘ee’ e começam com qualquer caractere único entre as letras ‘C’ e ‘L’.
USE AdventureworksLT2019; SELECT LastName, FirstName FROM SalesLT.Customer WHERE LastName LIKE '[C-L]ee'

Excluindo caracteres que não fazem parte do conjunto especificado
O [^] caractere curinga representa qualquer caractere único que não está dentro do intervalo ou conjunto especificado. A seguinte consulta recupera todas as linhas da tabela ‘SalesLT.Product’ onde o ‘Name’ não começa com ‘A’, ‘B’ ou ‘C’.
USE AdventureworksLT2019; SELECT Name FROM SalesLT.Product WHERE Name LIKE '[^ABC]%';

Usando várias condições de correspondência com curinga
A cláusula LIKE também pode ser combinada com vários curingas em uma única consulta. A consulta a seguir usa vários curingas SQL para recuperar todas as linhas da tabela ‘Person.Person’ onde o ‘FirstName’ contém a letra ‘a’ e o ‘LastName’ tem qualquer caractere seguido por ‘l’.
USE AdventureworksLT2019; SELECT FirstName, LastName FROM SalesLT.Customer WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';

Procurando por caracteres curinga
A correspondência com curinga adiciona muita potência e flexibilidade ao operador LIKE. No entanto, você pode se perguntar como usar LIKE para corresponder a um desses caracteres curinga em si.
Para fazer isso, você pode colocar o caractere curinga entre colchetes, o que permite usar um caractere curinga como um caractere literal. Você pode ver alguns exemplos na tabela a seguir.
Pattern | Search value |
LIKE ‘%2[%]%’ | 2% |
LIKE ‘%[_]m%’ | _m |
LIKE ‘%[ [ ]%’ | [ |
- O primeiro exemplo corresponde ao número 2 seguido pelo caractere curinga de porcentagem.
- O segundo exemplo corresponde ao caractere de sublinhado seguido pela letra m.
- O terceiro exemplo é usado para corresponder a caracteres de colchetes quadrados.

A instrução SQL LIKE aprimora a instrução SQL SELECT
Agora você deve entender melhor como pode usar o operador SQL LIKE para aprimorar o poder e a flexibilidade da instrução SQL SELECT. Aqui, também mostrei como usar a cláusula LIKE com vários caracteres curinga. Entre a correspondência de vários caracteres curinga, a correspondência de um único caractere, a correspondência de um conjunto de caracteres ou a exclusão de caracteres dos resultados, você realmente tem muitas possibilidades à sua disposição.
Source:
https://petri.com/sql-like/