Maybaygiare.org

Blog Network

SQLShack

In questo articolo, impareremo come utilizzare l’operatore SIMILE a SQL, in SQL Server, usando le espressioni regolari per trovare e / o manipolare il testo. Inizieremo imparando i simboli e la sintassi di base dell’uso delle espressioni regolari con caratteri jolly. Useremo set di caratteri ed espressioni di ripetizione per creare modelli di corrispondenza flessibili e, lungo il percorso, esamineremo diversi modi per utilizzare l’operatore LIKE. E poi, infine, nell’ultima parte della sezione, esploreremo alcuni degli esempi di espressioni regolari più comuni e più utili.

SQL è il linguaggio più comunemente usato per lavorare con i database. Quando si progetta un report o si utilizza BI o qualsiasi strumento di reporting, il software sta quasi certamente creando una query SQL dietro le quinte che viene eseguita sul database e restituisce i dati selezionati. Quando stiamo cercando dati specifici o i dati che si adattano a criteri specifici, la clausola where fornisce il set di strumenti necessario. Questo dà un’opzione per interrogare righe specifiche che stiamo cercando invece dell’intera tabella.

Pre-requisiti

Scarica il database AdventureWorks2014 qui per testare i seguenti esempi di T-SQL.

Guida introduttiva

Cerchiamo di walk-through le istruzioni SQL utilizzando la parola chiave LIKE e caratteri jolly. Quindi, iniziamo a conoscere SQL COME operatore.

Usando SQL COME esempi di caratteri jolly

Le espressioni regolari sono modelli per descrivere come abbinare le stringhe in una clausola WHERE. Molti linguaggi di programmazione supportano espressioni regolari che utilizzano una sintassi leggermente diversa da quella utilizzata con l’operatore LIKE. In questo articolo, quando ci riferiamo alle espressioni regolari, ci riferiamo ai modelli utilizzati con l’operatore SQL LIKE

La seguente tabella include i quattro diversi caratteri jolly. È inoltre possibile fare riferimento all’articolo SQL string functions for Data Munging (Wrangling) per ulteriori esempi.

i caratteri Jolly

Descrizione

%

Qualsiasi stringa di zero o più caratteri nella stringa di ricerca

Ogni singolo carattere di ricerca con il modello specificato

Ogni singolo carattere di ricerca all’interno dell’intervallo specificato

Ogni singolo carattere di ricerca non all’interno dell’intervallo specificato

l’Utilizzo di SQL COME con ‘%’ carattere jolly

I seguenti Istruzione SQL restituisce tutte le righe della tabella persona in cui il loro cognome inizia con la lettera A. Cerchiamo di specificare la lettera ‘ A‘, il primo carattere che deve essere nella stringa e quindi utilizzare il carattere jolly’%’, la percentuale.

1
2
3

SELECT TOP 10 *
DA Persona.Person
WHERE firstname LIKE’A%’;

Vedrai l’output che elenca le prime 10 righe della tabella person in cui il nome inizia con A e il resto del carattere è sconosciuto.

Usando SQL COME con il carattere jolly ‘ _ ’

Il carattere jolly, underscore, serve per abbinare qualsiasi singolo carattere. La seguente istruzione SQL trova tutti i numeri di telefono con un prefisso che inizia con 7 e termina con 8 nella colonna phonenumber. Abbiamo anche incluso % carattere jolly alla fine del modello di ricerca come non siamo interessati con il resto dei valori di stringa.

1
2
3
4
5
6
7

SELEZIONARE p.Nome,
p.Cognome,
numero di telefono
DA Persona.PersonPhone COME ph
INNER JOIN Persona.Persona COME p SU ph. BusinessEntityID = p.BusinessEntityID
DOVE ph.PhoneNumber LIKE ‘7_8%’
ORDINA PER p.LastName;

L’output mostra che sono elencati i prefisso che iniziano con 7 e terminano con 8.

Usando SQL COME con i caratteri jolly

Le parentesi quadre ad esempio ci permettono di identificare più caratteri singoli che si troverebbero in quella particolare posizione. Ad esempio, diciamo di elencare tutte le righe in cui i nomi del terzo carattere iniziano con I o K. Invece di scrivere più condizioni SIMILI, possiamo posizionare il pattern matching set nella terza posizione e chiuderlo nel quadrato. Il motore di query cerca prima ‘I ‘e poi cerca’K’.

facciamo eseguire la seguente istruzione SQL

1
2
3
4
5
6
7

SELEZIONARE p.Nome,
p.Cognome,
Numero di telefono
DA Persona.PersonPhone COME ph
INNER JOIN Persona.Persona COME p SU ph.BusinessEntityID = p.BusinessEntityID
DOVE ph.PhoneNumber COME ‘7_8%’ e p.lastname come ‘Ba%’
ORDINA PER p.LastName;

La query di cui sopra può essere ri-scritto utilizzando O condizione. È più come una condizione OR.

1
2
3
4
5
6
7

SELEZIONARE p.Nome,
p.Cognome,
numero di telefono
DALLA Persona.PersonPhone COME ph
INNER JOIN Persona.Persona COME p SU ph. BusinessEntityID = p. BusinessEntityID
DOVE il ph. PhoneNumber COME ‘7_8%’ e (p. lastname come ‘Bai%’ o p.cognome like ‘Bak%’)
ORDER BY p.Cognome;

il risultato, possiamo vedere che gli ultimi nomi in cui il terzo carattere è ‘io’ o ‘k’ sono elencate

Utilizzo di SQL COME con i ‘^’ carattere jolly

La seguente istruzione SQL consente di visualizzare tutte le righe che non hanno la lettera che inizia con c e D il primo carattere del loro cognome. Per questo posto il carattere tilde nella prima posizione del modello. Diventa il NON prerequisiti.

1
2
3
4
5

SELEZIONARE p.Nome,
p.Cognome
DALLA Persona.Person p
DOVE LastName COME ‘ % ‘
ORDINA PER p. lastname;

Ora, se eseguo la query di cui sopra, vedremo che tutti i nomi che tornano non hanno un A, B, C o D come primo carattere.

Usare SQL NON COME con i caratteri jolly

La seguente istruzione SQL trova tutte le persone in cui la colonna nome ha più di 3 caratteri.

1
2
3
4

SELECT DISTINCT
nome
DALLA Persona.Person
WHERE firstname NOT LIKE “;

La lista di output solo i nomi in cui la lunghezza del nome è più di 3

Utilizzo di SQL COME con la clausola ESCAPE

la seguente istruzione SQL, la clausola di salvaguardia è utilizzato come carattere di escape ‘!’per negare il significato di’ % ‘per trovare la stringa’ 100% Free ‘ nella colonna col1 della tabella temporanea.

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’);
VAI
SELEZIONA *
DA TEMP;
SELEZIONA *
DA temp
DOVE col1 PIACE ‘%100!% Gratis % ‘FUGA’!’;
GO

L’output elenca solo i valori in cui il modello di ricerca ‘100% Free’ corrisponde all’espressione col1.

Usando SQL COME con l’istruzione CASE

La seguente istruzione SQL estrae tutti i dipendenti che hanno un numero di telefono formattato come tre-tre-quattro cifre con trattini in mezzo (999-999-9999). Il modello viene quindi confrontato con la colonna phonenumber per derivare le categorie nazionali o internazionali.

L’espressione caso viene valutata per il modello specifico per derivare il tipo di categoria telefono.

1
2
3
4
5
6
7
8
9

SELEZIONARE p.Nome,
p.Cognome,
PhoneNumber,
CASO QUANDO il ph.PhoneNumber COME ‘–‘ e poi su ‘Nazionali Numero di Telefono’
ALTRO”, numero di Telefono Internazionale’
INDIA PhoneNumber
DALLA Persona.PersonPhone COME ph
INNER JOIN Persona.Persona COME p SU ph. BusinessEntityID = p. BusinessEntityID
ORDINA PER p. LastName;

Nell’output, possiamo vedere il numero è classificato come nazionale o internazionale. La colonna phonenumber viene valutata con l’operatore LIKE utilizzando la parentesi quadra. Il numero da zero a nove nella prima posizione del carattere viene valutato per abbinare il modello da zero a nove, qualsiasi numero da zero a nove nella seconda posizione del carattere e terzo e quindi la quarta posizione del carattere deve essere un trattino e una logica simile viene applicata al resto dei caratteri.

Utilizzando SQL COME con SQL dinamico

La seguente istruzione SQL restituisce tutti i dipendenti in cui il cognome corrisponde alla barra del modello. Il modello viene creato dinamicamente e confrontato con l’espressione.

1
2
3
4
5
6
7

AFFERMANDO @ELastName VARCHAR(20)= ‘Sbavatura’;
SELEZIONARE p.Nome,
p.Cognome,
l’.Città
DALLA Persona.Person p
UNISCITI alla Persona.Indirizzo SU p. BusinessEntityID = ‘s. AddressID
DOVE p. LastName COME’ % ‘ + @ ELastName+’%’;

La lista di output le righe corrispondenti per il modello specificato Barb

Nota: per impostazione predefinita, CHAR inietta spazi vuoti finali a seconda della lunghezza del campo. Utilizzare RTRIM per sopprimere gli spazi vuoti finali, se si utilizza il tipo di dati char.

Nella seguente istruzione SQL, il campo @eLastName è di tipo di dati char. Si può vedere un uso della funzione RTRIM per tagliare gli spazi vuoti finali.

1
2
3
4
5
6
7

AFFERMANDO @ELastName CHAR(20)= ‘Sbavatura’;
SELEZIONARE p.Nome,
p.Cognome,
l’.Città
DALLA Persona.Person p
UNISCITI alla Persona.Indirizzo SU p. BusinessEntityID = ‘s. AddressID
DOVE p. LastName COME’ % ‘ +RTRIM (@ELastName)+’%’;

Usando SQL Come con un’istruzione IF

La seguente istruzione SQL, il valore di input viene valutato per il modello specifico nella clausola condition usando l’istruzione IF.

1
2
3
4
5

DECLARE @RuleName di tipo NVARCHAR(MAX)= ‘SQL Sever 2019 CTP è disponibile per l’anteprima di’;
SE @ RuleName COME ‘ SQL Sever % CTP è disponibile per l’anteprima ‘
STAMPA ‘ input valido buono!’;
ELSE
PRINT ‘ non è un bene valido!’;

La stringa di input viene valutata per modelli specifici utilizzando l’espressione jolly SQL like e restituisce una stringa di input valida.

Questo è tutto per ora!

Sommario

Finora, abbiamo discusso vari suggerimenti e quattro diversi caratteri jolly ( % ,_, e ^] che sono disponibili con l’operatore SQL LIKE. Si tratta di una grande tecnica di ricerca per la corrispondenza stringa di caratteri con i modelli specificati o dove non abbiamo abbastanza sicuro di quello che stai cercando aka fuzzy search. I caratteri jolly disponibili rendono l’operatore SIMILE più flessibile. Spero che ti sia piaciuto questo articolo sull’operatore SQL LIKE in SQL Server. Sentiti libero di fare domande nei commenti qui sotto.

  • Autore
  • Post Recenti
Prashanth Jayaram
ho un Database tecnologo avendo 11 anni di ricca esperienza hands-on su tecnologie di Database. Sono Microsoft Certified Professional e sostenuto con una laurea in Master of Computer Application.
La mia specialità consiste nel progettare & implementando soluzioni ad alta disponibilità e migrazione DB multipiattaforma. Le tecnologie attualmente in lavorazione sono SQL Server, PowerShell, Oracle e MongoDB.
Visualizza tutti i messaggi di Prashanth Jayaram

Prashanth Jayaram
Ultimi messaggi di Prashanth Jayaram (vedi tutti)
  • Una rapida panoramica di controllo del database in SQL – gennaio 28, 2021
  • Come impostare la Sincronizzazione di Dati Azure tra Azure SQL database e di SQL Server-edificio – 20 gennaio 2021
  • Come eseguire Azure SQL database di Importazione/Esportazione, le operazioni di utilizzo di PowerShell – 14 gennaio 2021

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.