Essenciais do SQL Server: Usando o Operador SQL LIKE

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:

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 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].
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 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%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

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 '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

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

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’.

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 [^] 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]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

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%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

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 ‘%[ [ ]%’ [
Searching for wildcard characters
  • 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.
(Image credit: Petri/Michael Otey)

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/