8th Jul 2022 10 minutos de leitura Como usar LIKE em SQL: Correspondência de Padrões SQL Dorota Wdzięczna LIKE padrões de correspondência em SQL operador sql Índice Como usar LIKE em SQL? Combinação Parcial SQL: Uso de LIKE com curingas Correspondência Parcial SQL: o wildcard percentual SQL Parcial Match: o wildcard do Underscore Parcialmente compatível com SQL: Combinação de Wildcards Usando LIKE em SQL com Texto Combinando os operadores NOT e LIKE Usando LIKE em SQL com Outros Operadores Usando LIKE em SQL em Outras Declarações Para saber mais sobre o SQL Pattern Matching A correspondência de padrões SQL é uma habilidade muito importante e útil. Neste artigo, analisamos como você pode realizá-lo usando LIKE em SQL. Acorrespondência de padrões SQL é um conceito muito simples. Ele permite que você pesquise cadeias e substratos e encontre certos caracteres ou grupos de caracteres. Além do SQL, esta operação pode ser realizada em muitas outras linguagens de programação. Neste artigo, vamos examinar como você pode usar LIKE em SQL para pesquisar substratos. Também faremos a distinção entre correspondência exata SQL e correspondência parcial SQL, explicando como você pode expandir sua busca usando wildcards. Finalmente, esclareceremos quando você deve usar algo que não seja LIKE para encontrar uma correspondência. Se você gostaria de praticar LIKE e outros recursos SQL, confira nosso Trilha de Práticas em SQL pista. Ele oferece mais de 600 exercícios SQL interativos para ajudá-lo a rever seus conhecimentos de SQL e ganhar confiança em suas habilidades SQL. Como usar LIKE em SQL? Suponha que você tenha que recuperar alguns registros com base em se uma coluna contém um determinado grupo de caracteres. Como você sabe, em SQL a cláusula WHERE filtra SELECT resultados. Por si só, WHERE encontra correspondências exatas. Mas e se você precisar encontrar algo usando uma correspondência parcial? Nesse caso, você pode usar LIKE em SQL. Este operador procura caracteres específicos em strings ou substrings e retorna quaisquer registros que correspondam a este padrão. (Daí a correspondência do padrão SQL.) Abaixo está a sintaxe do operador LIKE em uma declaração SELECT: SELECT [ column_list | * ] FROM table_name WHERE column or expression LIKE pattern; Note que o nome da coluna ou a expressão a ser pesquisada vem antes do LIKE em SQL. Após o operador é o padrão a ser correspondido. Este padrão pode ser texto puro ou texto misturado com um ou mais wildcards. Explicaremos a seguir o uso de wildcards. Combinação Parcial SQL: Uso de LIKE com curingas Se você não sabe exatamente o padrão que está procurando, você pode usar wildcards para ajudá-lo a encontrá-lo. Os wildcards são símbolos de texto que denotam quantos caracteres estarão em um determinado lugar dentro da corda. O padrão SQL ANSI usa dois curingas, porcentagem (%) e sublinhado (_), que são usados de maneiras diferentes. Ao usar os curingas, você realiza uma correspondência parcial SQL em vez de uma correspondência exata SQL, pois não inclui uma string exata em sua consulta. wildcard description % zero, one, or many characters, including spaces _ a single character Veja o completo animal tabela que será utilizada em nossas consultas SQL: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 22 null Nota: ... . denota dois espaços. Correspondência Parcial SQL: o wildcard percentual Como você pode ver na tabela acima, a porcentagem de wildcard pode ser usada quando você não tem certeza de quantos caracteres farão parte de sua partida. No exemplo abaixo, observe o que acontece quando você usa somente este curinga com LIKE em SQL: SELECT id, name FROM animal WHERE name LIKE '%' ; Resultado: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 Nota: ... . denota dois espaços. Este uso da partida parcial SQL retorna todos os nomes do animal tabela, mesmo aqueles sem nenhum caractere na coluna do nome. Isto porque o wildcard percentual denota qualquer caractere ou nenhum caractere. Mesmo quando há um valor nulo na coluna do nome, uma cadeia vazia é devolvida. Mas se você gostaria de retornar somente os nomes dos animais que começam com um "g", você deve escrever a consulta usando um "g" em frente ao wildcard da porcentagem: SELECT id, name FROM animal WHERE name LIKE 'g%' ; O resultado desta operação de correspondência parcial SQL é o seguinte: id name 20 gerenuk Da mesma forma, se você gostaria de selecionar os nomes dos animais que terminam com um "g", você colocaria a porcentagem de wildcard em primeiro lugar, como mostrado nesta consulta de correspondência parcial SQL: SELECT id, name FROM animal WHERE name LIKE '%g'; Resultado: id name 1 frog 2 dog 15 hedgehog 19 hog A seguinte consulta retorna todos os animais cujo nome contém um "g”. Para isso, usar dois por cento de wildcards e um ".g", como mostrado abaixo. SELECT id, name FROM animal WHERE name LIKE '%g%'; Resultado: id name 1 frog 2 dog 5 jaguar 15 hedgehog 18 langur 19 hog 20 gerenuk Todos estes animais têm um nome que contém um "g" em algum lugar - no início, no meio ou no fim. Agora, vamos passar para o wildcard do sublinhado. SQL Parcial Match: o wildcard do Underscore O wildcard do sublinhado representa um único caractere para cada sublinhado. Nesta partida parcial SQL, ele pode substituir qualquer caractere, mas cada sublinhado é limitado a um caractere. Veja o exemplo abaixo: SELECT id, name FROM animal WHERE name LIKE '_'; Resultado: id name 0 fileiras Esta consulta não retornou nenhum registro porque não há nomes de animais com um único caractere na tabela. O exemplo seguinte mostra todos os nomes que contêm exatamente cinco caracteres. Para representar isto, devemos usar cinco sublinhados: SELECT id, name FROM animal WHERE name LIKE '_____'; Resultado: id name 7 panda 10 sheep 11 camel 13 lemur Se você usar o wildcard de sublinhado no final de sua string de correspondência parcial SQL, a consulta retornará cada registro que corresponder ao texto dado mais um caractere a mais. Abaixo vemos um exemplo: SELECT id, name FROM animal WHERE name LIKE 'lio_'; Resultado: id name 8 lion O que é retornado quando a consulta tem um curinga de sublinhado no meio da cadeia de caracteres? SELECT id, name FROM animal WHERE name LIKE 'p_ma'; Resultado: O que é retornado quando a consulta tem um curinga de sublinhado no meio da cadeia de caracteres? id name 6 puma São todos os animais cujos nomes começam com "p" e terminar com "ma", com apenas um personagem no meio. Parcialmente compatível com SQL: Combinação de Wildcards Você também pode usar uma combinação de sublinhado e percentagem de wildcards para sua correspondência de padrões SQL. Veja o exemplo a seguir: SELECT id, name FROM animal WHERE name LIKE '%ho_'; Resultado: id name 15 hedgehog 19 hog Como você pode ver, esta consulta retornou nomes que combinavam "ho"com qualquer número de caracteres na frente e apenas um caractere a seguir. Usando LIKE em SQL com Texto Agora discutiremos como usar LIKE em SQL com strings apenas de texto e sem wildcards. Em algumas circunstâncias, você pode descobrir que há melhores opções do que usar LIKE em correspondência de padrões SQL. Mas, por enquanto, vamos ver como isto funciona. Vamos começar olhando a tabela completa de nomes de animais e números de identificação, como mostrado abaixo: id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 monkey 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant. .. 18 langur 19 hog 20 gerenuk 21 22 null Nota: ... denota dois espaços. Tipos de dados de texto em SQLhttps://t.co/2cWLoe7ONa#sql #LearnSQL #Base de dados - Vertabelo (@Vertabelo) 5 de janeiro de 2017 Note que o registro onde id=21 tem uma cadeia vazia (sem caracteres). O último registro tem um valor NULL na coluna name. Agora, digamos que queremos recuperar os registros onde o nome do animal é "elefante". Isso é muito simples, como mostra o exemplo abaixo: SELECT id, name FROM animal WHERE name LIKE 'elephant'; Resultado: id name 16 elephant Na tabela, há na verdade dois registros contendo "elefante". No entanto, o segundo registro tem dois espaços adicionais no final da palavra, portanto não é devolvido. Vamos tentar outro padrão de texto que inclui estes dois espaços. SELECT id, name FROM animal WHERE name LIKE 'elephant '; Resultado: id name 17 elephant. .. Nota: ... denota dois espaços. Novamente, há apenas um registro: "elefante" com dois espaços. A seguir, suponhamos que utilizemos uma seqüência de texto concreta e um operador igual (=), como este: SELECT id, name FROM animal WHERE name = 'elephant ' ; Resultado: id name 16 elephant Se você quiser verificar se uma cadeia de texto é igual ao valor de uma coluna, você está procurando por uma correspondência exata SQL em vez de uma correspondência parcial SQL. Nesse caso, use um operador igual em vez de LIKE. Combinando os operadores NOT e LIKE Você também pode testar para cordas que não correspondem a um padrão. Para fazer isso, combinamos os operadores LIKE e NOT. É outra forma de realizar a correspondência de padrões SQL. No exemplo abaixo, queremos encontrar todos os nomes de animais que não têm um caracter "a": SELECT id, name FROM animal WHERE name NOT LIKE '%a%'; Resultado: id name 1 frog 2 dog 4 fox 8 lion 10 sheep 12 monkey 13 lemur 15 hedgehog 19 hog 20 gerenuk 21 camel Usando LIKE em SQL com Outros Operadores A cláusula WHERE pode incluir mais de uma condição. Portanto, LIKE e NOT LIKE podem ser usados com outros operadores. Vejamos outro exemplo: SELECT id, name FROM animal WHERE name LIKE '%g' OR name LIKE 's%' ; Resultado: id name 1 frog 2 dog 10 sheep 15 hedgehog 19 hog Ele retornou todos os nomes de animais que começam com um "s" caráter ou fim com um "g" caráter. Usando LIKE em SQL em Outras Declarações Até agora, discutimos o uso de LIKE em instruções SQL apenas em SELECT. Mas este operador pode ser usado em outras instruções, tais como UPDATE ou DELETE. Como você pode ver, a sintaxe é bastante similar: UPDATE table SET column1 = newValue WHERE column2 LIKE pattern ; DELETE FROM table WHERE column LIKE pattern ; Vamos ver como podemos usar LIKE para mudar alguns nomes de animais. Pronto? UPDATE animal SET name='tiger' WHERE name LIKE '%key%' ; Há apenas um registro que combina com a condição LIKE %key%: macaco. Após esta atualização, "tigre" substituirá todas as instâncias de "macaco". Aqui está o resultado após a atualização e, em seguida, selecionar todos os registros do animal mesa. SELECT * FROM animal ; id name 1 frog 2 dog 3 bear 4 fox 5 jaguar 6 puma 7 panda 8 lion 9 leopard 10 sheep 11 camel 12 tiger 13 lemur 14 rabbit 15 hedgehog 16 elephant 17 elephant.. . 18 langur 19 hog 20 gerenuk 21 22 null Nota: ... denota dois espaços. Em seguida, excluiremos qualquer registro em que o nome do animal comece com um "t”: DELETE FROM animal WHERE name LIKE 't%' ; Para saber mais sobre o SQL Pattern Matching A correspondência de padrões SQL é muito útil para buscar substratos de texto. LIKE e seu parente próximo NOT LIKE tornam isto bastante fácil de fazer. Se você estiver interessado em aprender mais sobre a correspondência de padrões e o operador LIKE, confira o curso SQL para Iniciantes . Ele lhe mostrará como construir consultas a partir do zero, mas também introduzirá habilidades práticas como a correspondência de padrões. Se você tem um conhecimento básico de SQL, você pode atualizá-lo com o Curso de Práticas em SQL de 88 exercícios, que vão desde tarefas simples com declarações SELECT FROM até problemas mais avançados envolvendo múltiplas subconsultas. Ou experimente nossos Trilha de Práticas em SQL pista com 5 cursos de prática SQL e mais de 600 exercícios. Inscreva-se agora de graça! Tags: LIKE padrões de correspondência em SQL operador sql