Essenciais do SQL Server: Usando o Operador SQL LIKE

O operador LIKE do T-SQL é uma das adições mais úteis à instrução SELECT do SQL. 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 certas 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 instrução SQL LIKE, e eu vou mostrar como usá-la neste tutorial.

Sintaxe do SQL LIKE

Você pode ver a sintaxe básica do operador LIKE na seguinte listagem:

Publicidade

  • 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 correspondem. 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 corresponder. Isso pode ser um literal ou pode incluir caracteres wildcard que tornam o processo de corresponder 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 das 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ões SQL LIKE pode incluir caracteres regulares assim 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ões, 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].
The four different types of wildcard characters to use with the LIKE operator.

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.

Anúncio

Correspondência de vários caracteres wildcard

O % curinga representa zero ou mais caracteres. A consulta a seguir recupera todas as linhas da tabela ‘Person.Person’ onde o ‘LastName’ começa com a letra ‘A’.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

Correspondência curinga de um único caractere

O curinga _ representa um único caractere. A consulta de exemplo a seguir recupera todas as linhas da tabela ‘SalesLT.Product’ onde o ‘Name’ tem exatamente quatro caracteres de qualquer tipo seguidos por um hífen.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

Correspondência curinga para um conjunto de caracteres

O [] wildcard 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]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

Comparação com wildcard para um intervalo de caracteres

Você também pode usar a cláusula LIKE para suportar buscas de intervalo. Esta consulta recupera os sobrenomes terminando com ‘ee’ e começando com qualquer caractere único entre as letras ‘C ‘ e ‘L’.

Anúncio

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

Excluindo caracteres que não fazem parte do conjunto especificado

O [^] wildcard representa qualquer caractere único que não está dentro do intervalo ou conjunto especificado. A consulta seguinte 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]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

Usando condições de correspondência de asterisco múltiplo

A cláusula LIKE também pode ser combinada com vários caracteres de asterisco em uma única consulta. A seguinte consulta usa vários caracteres de asterisco 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%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

Pesquisando caracteres de asterisco

A correspondência de caracteres de asterisco adiciona muita potência e flexibilidade ao operador LIKE. No entanto, você pode estar se perguntando como usar o LIKE para corresponder a um destes caracteres de asterisco próprios.

Para fazer isso, você pode envolver o caractere de asterisco em parêntesis, o que permite que você use um caractere de asterisco como um caractere literal. Você pode ver alguns exemplos na seguinte tabela.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • O primeiro exemplo corresponde ao número 2 seguido pelo caractere de percentual de asterisco.
  • O segundo exemplo corresponde ao caractere de underline seguido pela letra m.
  • O terceiro exemplo é usado para corresponder a caracteres de colchete.
(Image credit: Petri/Michael Otey)

A instrução SQL LIKE melhora a instrução SQL SELECT

Agora você deve entender melhor como usar o operador SQL LIKE para aprimorar o poder e a flexibilidade da instrução SQL SELECT. Aqui, eu 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/