8th Jul 2022 7 minutos de leitura O que os Operadores LIKE e NOT LIKE fazem? Andrew Bone sql aprender sql sql operators Índice O SQL LIKE e os wildcards O curinga de sublinhado (_) O curinga percentual (%) SQL NOT LIKE Sensibilidade ao caso SQL LIKE LIKE e NOT LIKE Outro que em uma cláusula WHERE SQL LIKE e NOT LIKE são essenciais para a filtragem de dados Os operadores SQL LIKE e NOT LIKE são usados para encontrar correspondências entre uma string e um determinado padrão. Eles são parte do SQL padrão e funcionam em todos os tipos de banco de dados, tornando-o conhecimento essencial para todos os usuários de SQL. O entendimento destes operadores permitirá que você escreva melhores consultas e demonstre aos empregadores em potencial que você tem as habilidades necessárias para filtrar através de conjuntos de dados expansivos. O SQL LIKE é um operador lógico que verifica se uma string contém ou não um padrão especificado. Um exemplo simples disto é quando você tenta descobrir se uma coluna de nomes contém algum nome de quatro letras começando por J (tal como "John"). O operador LIKE é freqüentemente usado na cláusula WHERE de SELECT, DELETE e UPDATE para filtrar dados com base em padrões. Tornar-se proficiente no uso do operador LIKE lhe permitirá analisar grandes bancos de dados com facilidade, e recuperar exatamente os dados que você precisa. Este artigo lhe dará uma base sólida no operador LIKE. Se você gostaria de avançar ainda mais suas habilidades nesta área, considere inscrever-se nesta faixa de aprendizado abrangente e completa de LearnSQL.com.br, onde você irá praticar SQL JOINs, agregações com GROUP BY, e tópicos mais avançados. Vamos examinar como podemos usar o operador LIKE para filtrar os dados retornados, recuperando assim apenas os registros desejados. Aqui está a sintaxe do operador LIKE: SELECT column_1, column_2, ... column_n FROM table_name WHERE column_1 LIKE pattern Vamos aplicar esta sintaxe a um exemplo prático. Imagine que temos uma tabela chamada person_info contendo informações sobre o nome, sobrenome e idade das pessoas. FirstNameLastNameAge TimSamuels46 JohnPeterson23 TomWaters42 SarahHenderson48 PaulJohnson34 AndrewWade39 SarahSmith30 LynnPeterson27 Vamos usar o operador LIKE para extrair as informações para pessoas com o sobrenome "Peterson". SELECT FirstName, LastName, Age FROM person_info WHERE LastName LIKE 'Peterson' A execução desta consulta SQL produziria o seguinte conjunto de resultados: FirstNameLastNameAge JohnPeterson23 LynnPeterson27 Este é um caso de uso simples para o operador LIKE. Para casos simples como este, também poderíamos ter escrito: SELECT FirstName, LastName, Age FROM person_info WHERE LastName = 'Peterson' Então, qual é a diferença entre usar LIKE e igualar? Equals (=) é um operador de comparação que opera em números e strings. Ao comparar cordas, o operador igual compara cordas inteiras. Em comparação, LIKE compara caráter por caráter através do uso de wildcards, que será discutido em detalhes neste artigo. O SQL LIKE e os wildcards Além de examinarmos o uso de SQL LIKE e NOT LIKE, analisaremos dois caracteres curinga: porcentagem (%) e sublinhado (_). Os caracteres curinga são usados para substituir um ou mais caracteres em uma cadeia padrão: O curinga percentual (%) substitui um ou mais caracteres em uma cadeia de caracteres. O wildcard underscore (_) substitui exatamente um caractere em uma cadeia de caracteres. O curinga de sublinhado (_) Vamos ver primeiro o wildcard (_) e aplicá-lo ao nosso person_info mesa. Imagine que queremos recuperar, da mesa person_infoos primeiros nomes das pessoas com as seguintes condições: O FirstName deve começar com a letra "T", A terceira carta de FirstName deve ser "m", e A segunda carta FirstName pode ser qualquer coisa. Podemos utilizar a seguinte consulta: SELECT FirstName FROM person_info WHERE FirstName LIKE 'T_m' O resultado desta consulta é: SELECT FirstName FROM person_info WHERE FirstName LIKE 'T_m' O resultado desta consulta é: O resultado desta consulta é: O resultado desta consulta é: FirstName Tim Tom Observe como a segunda letra do nome pode ser qualquer coisa. Nossa consulta SQL está ignorando essa letra e procurando o padrão que especificamos. Vejamos outro exemplo. Desta vez, vamos substituir dois caracteres por dois caracteres curinga de sublinhado (_). SELECT FirstName, LastName FROM person_info WHERE LastName LIKE 'Wa__' Executando esta consulta, recuperamos um único registro de nossa tabela. FirstNameLastName AndrewWade Observe como Andrew Wade combina com o padrão, mas não Tom Waters. Ao colocar dois sublinhados após "Wa", especificamos explicitamente que o LastName que estamos procurando tem 4 caracteres. O wildcard do sublinhado pode ser colocado em qualquer lugar do padrão que você está procurando. "_om", "T_m", ou "To_", são todos padrões válidos. O curinga percentual (%) Vamos agora analisar o wildcard percentual (%) em detalhes e aplicá-lo em nossa tabela de informação_pessoal. O curinga da porcentagem (%) é usado para substituir vários caracteres. Como exemplo, imagine que queremos encontrar todas as pessoas cujo sobrenome termina em "filho". Para conseguir isso, podemos simplesmente escrever a seguinte pergunta: SELECT FirstName, LastName FROM person_info WHERE LastName LIKE '%son' O resultado desta consulta é: FirstNameLastName JohnPeterson SarahHenderson PaulJohnson LynnPeterson Observe como o número de caracteres antes de "filho" não importa com este curinga. Se o padrão que você está procurando estiver embutido no meio de outra string, você pode usar o curinga percentual no início e no final do padrão. Por exemplo, para encontrar todos os funcionários cujos sobrenomes contenham "er", use a seguinte consulta com o padrão '%er%'. SELECT FirstName, LastName FROM person_info WHERE LastName LIKE '%er%' A execução desta consulta produz o seguinte conjunto de resultados: FirstNameLastName JohnPeterson TomWaters SarahHenderson LynnPeterson Vamos combinar o uso de ambos _ e %. Digamos que queremos encontrar todos os primeiros nomes cujo segundo caractere é a letra "a". Podemos fazer isto com a seguinte consulta: SELECT FirstName, LastName FROM person_info WHERE FirstName LIKE '_a%' A execução desta consulta resulta neste conjunto: FirstNameLastName SarahHenderson PaulJohnson PaulaSmith O operador LIKE é mais comumente usado em conjunto com a cláusula WHERE. Entretanto, ele pode ser usado em qualquer lugar que você use uma expressão em SQL. SQL NOT LIKE SQL NOT LIKE comporta-se como você poderia esperar, essencialmente retornando o oposto do que o operador LIKE faria. Vamos substituir LIKE por NOT LIKE em um de nossos exemplos anteriores e ver o efeito. SELECT FirstName, LastName, Age FROM person_info WHERE LastName NOT LIKE 'Peterson' Aqui está o conjunto de resultados: FirstNameLastNameAge TimSamuels46 TomWaters42 SarahHenderson48 PaulJohnson34 AndrewWade39 PaulaSmith30 Como você pode ver, o uso do NOT LIKE nega o padrão que você especifica. Isto é semelhante a outros operadores NOT que você vê em SQL. Neste caso, o operador NOT LIKE recupera dados para todas as pessoas cujo sobrenome não é Peterson. Sensibilidade ao caso SQL LIKE Para os exemplos acima, o nome "Peterson" foi usado com uma letra maiúscula. Dependendo da variante do SQL que você estiver usando, o operador LIKE pode ser sensível a maiúsculas e minúsculas. MySQL, PostgreSQL, e Oracle são todos sensíveis a maiúsculas e minúsculas por padrão. O SQL Server pode ser um pouco mais complicado. Por padrão, o SQL Server não faz distinção entre maiúsculas e minúsculas. Entretanto, é possível criar um banco de dados SQL Server sensível a maiúsculas e minúsculas e até mesmo tornar as colunas das tabelas específicas sensíveis a maiúsculas e minúsculas. LIKE e NOT LIKE Outro que em uma cláusula WHERE É comum ver LIKE e NOT LIKE usados em combinação com uma cláusula WHERE. Entretanto, o operador LIKE pode ser usado em qualquer instrução SQL válida, como SELECT, INSERT INTO, UPDATE, ou DELETE. Vejamos isto com um exemplo executado contra nossa person_info mesa. Considere a seguinte consulta SQL: SELECT FirstName, FirstName LIKE 'T%' AS starts_with_t FROM person_info; A declaração SELECT aqui não recupera apenas os dados da coluna FirstName. Emparelhado com LIKE, a segunda coluna selecionada nesta consulta retorna um valor booleano baseado em FirstName para cada registro na tabela. O padrão que especificamos é qualquer string começando com a letra "T", então esta consulta verifica cada FirstName para ver se começa com a letra "T" e retorna verdadeiro (1) se começa, falso (0) caso contrário. A execução desta consulta gera o seguinte conjunto de resultados: FirstNamestarts_with_t Tim1 John0 Tom1 Sarah0 Paul0 Andrew0 Paula0 Lynn0 SQL LIKE e NOT LIKE são essenciais para a filtragem de dados Já cobrimos a maioria das situações para o uso do operador LIKE. Entender o operador SQL LIKE é essencial, e se você se candidatar a qualquer trabalho em que o uso de SQL seja necessário, pode ser uma das perguntas da entrevista SQL que eles fazem. O domínio do operador LIKE e destes dois caracteres curinga vem com prática, portanto este curso SQL interativo do LearnSQL.com.br com 88 exercícios distintos é um grande recurso para aqueles que procuram melhorar o conhecimento nesta área. Tags: sql aprender sql sql operators