neste artigo, vamos aprender como usar o operador LIKE SQL, no SQL Server, usando expressões regulares para encontrar e/ou manipular texto. Vamos começar por aprender os símbolos e sintaxe básica de usar expressões regulares wildcard. Vamos usar conjuntos de caracteres e expressões de repetição para criar padrões de correspondência flexíveis, e ao longo do caminho, vamos examinar diferentes maneiras de usar o operador similar. E então, finalmente, na última parte da seção, vamos explorar alguns dos exemplos de Expressões Regulares mais comuns e mais úteis.
SQL é a linguagem mais usada para trabalhar com bases de dados. Quando você projetar um relatório ou usar BI ou qualquer ferramenta de relatórios, o software está quase certamente construindo uma consulta SQL nos bastidores que corre no banco de dados e retorna seus dados selecionados. Quando estamos à procura de dados específicos ou os dados que se encaixam em critérios específicos, a cláusula onde fornece o conjunto de ferramentas que você precisa. Isto dá uma opção para consultar linhas específicas que estamos procurando em vez de toda a tabela.
pré-requisitos
Download da base de dados AdventureWorks2014 aqui para testar as seguintes amostras T-SQL.
iniciando
deixe-nos percorrer as declarações SQL usando as palavras-chave e caracteres especiais. Então, vamos começar a aprender sobre SQL como operador.
usando exemplos de caracteres especiais SQL como caracteres especiais
expressões regulares são padrões para descrever como corresponder strings em uma cláusula onde. Muitas linguagens de programação suportam expressões regulares que usam sintaxe ligeiramente diferente do que é usado com o operador similar. Neste artigo, quando nos referimos a Expressões Regulares, estamos nos referindo aos padrões usados com o operador SQL como operador
a tabela seguinte inclui os quatro caracteres especiais diferentes. Você também pode se referir ao artigo SQL string functions para Munging de dados (Wrangling) para mais exemplos.
caracteres Curinga |
Descrição |
% |
Qualquer seqüência de zero ou mais caracteres no padrão de pesquisa |
Qualquer caractere único de pesquisa com o padrão especificado |
|
Qualquer caractere único de pesquisa dentro do intervalo especificado |
|
Qualquer caractere único pesquisa não dentro do intervalo especificado |
Usando o SQL COMO com ‘%’ caractere curinga
O seguinte A instrução SQL devolve todas as linhas da tabela de pessoas onde o seu último nome começa com a letra A. vamos especificar a letra ‘a’, o primeiro carácter que precisa de estar no texto e, em seguida, usar o carácter especial’%’, o percentual.
1
2
3
|
SELECT TOP 10 *
a PARTIR de uma Pessoa.Pessoa
onde o primeiro nome como ‘a%’;
|
você verá o resultado que lista as 10 primeiras linhas da tabela pessoa onde o primeiro nome começa com A e o resto do carácter é Desconhecido.
usando SQL como o carácter de caracteres especiais ‘ _ ‘
a sequência especial, sublinhado, é para corresponder a qualquer carácter único. A seguinte declaração SQL encontra todos os números de telefone que têm um código de área começando com 7 e terminando em 8 na coluna de phonenumber. Também incluímos % wildcard character no final do padrão de busca, já que não estamos preocupados com o resto dos valores de string.
1
2
3
4
5
6
7
|
SELECIONE p.Nome,
p.Sobrenome,
Telefone
a PARTIR de uma Pessoa.PersonPhone como ph
INNER JOIN Person.Pessoa p em pH. BusinessEntityID = p.BusinessEntityID
ONDE o ph.PhoneNumber COMO ‘7_8%’
ORDER BY p.Sobrenome;
|
A saída mostra que o código de área do que iniciar com 7 e termina com 8 são listados.
Usando o SQL COMO com os caracteres curinga
colchetes e.g nos permitem identificar vários caracteres únicos que poderiam estar em uma determinada posição. Por exemplo, vamos dizer para listar todas as linhas onde os primeiros nomes terceiro caractere começa com I ou K. Em vez de escrever múltiplas condições semelhantes, podemos colocar o conjunto de correspondência padrão na terceira posição e fechá-lo no quadrado. O motor de consulta procura primeiro por ” I “e depois procura por “K”.
Vamos executar a seguinte instrução de SQL
1
2
3
4
5
6
7
|
SELECIONE p.Nome,
p.LastName,
PhoneNumber
de pessoa.PersonPhone como ph
INNER JOIN Person.Pessoa p NO ph.BusinessEntityID = p.BusinessEntityID
ONDE o ph.PhoneNumber COMO ‘7_8%’ e p.lastname like ‘Ba%’
ORDER BY p.Sobrenome;
|
A consulta acima pode ser re-escrito usando OU condição. É mais uma condição.
1
2
3
4
5
6
7
|
SELECIONE p.Nome,
p.Sobrenome,
Telefone
a PARTIR de uma Pessoa.PersonPhone como ph
INNER JOIN Person.Pessoa p em ph. BusinessEntityID = p. BusinessEntityID
em que o ph.ph é igual a ‘7_8%’ e (p.lastname como ‘Bai%’ ou p.lastname like ‘Bak%’)
ORDER BY p.Sobrenome;
|
Na saída, podemos ver que os últimos nomes que o terceiro caractere for ‘eu’ ou ‘k’ são listados
Usando o SQL COMO com o ‘^’ caractere curinga
A instrução SQL a seguir exibe todas as linhas que não têm a letra que começa com D em a primeira letra do seu sobrenome. A fim de que colocar o caráter tilde na primeira posição do padrão. Torna-se o não pré-requisito.
1
2
3
4
5
|
SELECIONE p.Nome,
p.Sobrenome
a PARTIR de uma Pessoa.Pessoa p
onde o LastName como ‘ % ‘
ordem por P. lastname;
|
Agora, se eu executar a consulta acima, veremos que todos os nomes de voltar não tem Um a, B, C ou D como seu primeiro caractere.
Usando o SQL NÃO é COMO com os caracteres curinga
a instrução SQL A seguir encontra todas as pessoas, onde a primeira coluna nome tem mais de 3 caracteres.
1
2
3
4
|
SELECT DISTINCT
nome
a PARTIR de uma Pessoa.Pessoa
em que o primeiro nome não gosta “;
|
A saída da lista apenas os nomes que o comprimento do nome é mais do que 3
Usando o SQL COMO com a cláusula de ESCAPE
Na seguinte instrução de SQL, a cláusula de ESCAPE é utilizado para fugir aos caracteres ‘!’para negar o Significado de ‘%’ para encontrar a cadeia ‘100% livre’ na coluna col1 da tabela temp.
1
2
3
4
5
6
7
8
9
10
11
12
|
DROP TABLE IF EXISTS temp;
CREATE TABLE temp(col1 VARCHAR(100));
GO
INSERT INTO temp
VALUES(‘ApexSQL Refactor is 100% Free SQL Formatter tool’), (‘ApexSQL Job is 10-15% off today only’);
GO
SELECT *
da TEMP;
SELECT *
da temp
onde col1 como ‘ % 100!% Free% ‘ESCAPE’!’;
GO
|
a lista de saída apenas os valores em que o padrão de procura “100% livre” corresponde à expressão do col1.
Usando o SQL COMO com a instrução de CASO
A seguinte instrução de SQL puxa todos os funcionários que têm um número de telefone formatado como três-três-quatro dígitos com traços entre (999-999-9999). O padrão é então comparado com a coluna de número fonético para derivar as categorias nacionais ou internacionais.
a expressão do caso é avaliada para o padrão específico para derivar o tipo de categoria de telefone.
1
2
3
4
5
6
7
8
9
|
SELECIONE p.Nome,
p.Sobrenome,
PhoneNumber,
CASO QUANDO o ph.PhoneNumber COMO ‘–‘ então ‘Domésticos Número de Telefone’
ELSE ‘número de Telefone Internacional’
ÍNDIA PhoneNumber
a PARTIR de uma Pessoa.PersonPhone como ph
INNER JOIN Person.Pessoa p NO ph.BusinessEntityID = p.BusinessEntityID
ORDER BY p.Sobrenome;
|
Na saída, podemos ver que o número é classificado como nacional ou internacional. A coluna fonenumber é avaliada com o operador similar usando o suporte quadrado. O número zero a nove na primeira posição de caracteres é avaliado para corresponder padrão zero a nove, qualquer número de zero a nove na segunda posição de caracteres e terceiro e, em seguida, a quarta posição de caracteres deve ser um traço e lógica similar é aplicada ao resto dos caracteres.
Usando o SQL COMO com SQL dinâmico
a instrução SQL A seguir retorna todos os funcionários, onde o sobrenome coincide com o padrão de Barb. O padrão é criado dinamicamente e comparado com a expressão.
1
2
3
4
5
6
7
|
INFORMANDO @ELastName VARCHAR(20)= ‘Farpa’;
SELECIONE p.Nome,
p.Sobrenome,
o.
= = ligações externas = = Pessoa p junta-te à pessoa.Endereço da P. BusinessEntityID = ‘ S. AddressID
ONDE p. LastName como ‘% ‘ +@ELastName+’%’;
|
A lista de saída as linhas correspondentes para o padrão especificado Barb
Nota: Por predefinição, CHAR injeta espaços em branco à direita, dependendo do comprimento do campo. Use o RTRIM para suprimir os espaços em branco, se estiver a usar o tipo de dados char.
na seguinte instrução SQL, o campo @eLastName é do tipo de dados char. Você pode ver um uso da função RTRIM para aparar os espaços em branco.
1
2
3
4
5
6
7
|
INFORMANDO @ELastName CHAR(20)= ‘Farpa’;
SELECIONE p.Nome,
p.Sobrenome,
o.
= = ligações externas = = Pessoa p junta-te à pessoa.Endereço da P. BusinessEntityID = ‘ S. AddressID
em que P. LastName como ‘% ‘ +RTRIM (@ELastName)+’%’;
|
usando SQL como uma declaração de FI
a seguinte declaração de SQL, o valor de entrada é avaliado para o padrão específico na cláusula de condição usando declaração de FI.
1
2
3
4
5
|
DECLARE @Nomeregra NVARCHAR(MAX)= ‘SQL Sever 2019 CTP está disponível para pré-visualizar’;
IF @RuleName LIKE ‘SQL Sever % CTP is available for preview’
PRINT ‘valid input good!’;
ELSE
PRINT ‘ not a valid good!’;
|
o texto de entrada é avaliado para padrões específicos usando a expressão de caracteres especiais SQL, como a expressão de caracteres especiais, e devolve um texto de entrada válido.
isso é tudo por agora!
resumo
até agora, discutimos várias dicas e quatro wildcards diferentes ( % ,_, e ^] que estão disponíveis com o operador semelhante SQL. É uma grande técnica de busca para combinar a cadeia de caracteres com os padrões especificados ou onde não temos certeza do que você está procurando aka fuzzy search. Os caracteres especiais disponíveis tornam o operador similar mais flexível. Espero que tenha gostado deste artigo sobre a operadora SQL no servidor SQL. Sinta-se livre para fazer quaisquer perguntas nos comentários abaixo.
- Autor
- Posts Recentes
minha especialidade reside em projetar & implementando soluções de alta disponibilidade e migração de DB entre plataformas. As tecnologias atualmente em funcionamento são SQL Server, PowerShell, Oracle e MongoDB.
Ver todos os posts por Prashanth Jayaram
- Uma rápida visão geral de auditoria de banco de dados em SQL – janeiro 28, 2021
- Como configurar Azure Sincronização de Dados entre bancos de dados SQL Azure e local do SQL Server – 20 de janeiro de 2021
- Como realizar Azure SQL database operações de Importação/Exportação usando o PowerShell – 14 de janeiro de 2021