Questo articolo esplora i comandi RegEx T-SQL in SQL Server per eseguire la ricerca dei dati utilizzando varie condizioni.
Introduzione
Memorizziamo i dati in più formati o tipi di dati nelle tabelle SQL Server. Supponiamo di avere una colonna di dati che contiene dati di stringa in formato alfanumerico. Usiamo COME operatore logico per cercare carattere specifico nella stringa e recuperare il risultato., Ad esempio, nella tabella Employee, vogliamo filtrare i risultati e ottenere l’unico dipendente il cui nome inizia con il carattere A.
Usiamo espressioni regolari per definire modelli specifici in T-SQL in un operatore SIMILE e filtrare i risultati in base a condizioni specifiche. Chiamiamo anche queste espressioni regolari come funzioni RegEx T-SQL. In questo articolo, useremo il termine T-SQL RegEx functions per le espressioni regolari.,
Possiamo avere diversi tipi di espressioni regolari:
- Alfabetico RegEx
- Numerico RegEx
- Caso di Sensibilità RegEx
- Caratteri Speciali RegEx
- RegEx per Escludere i Caratteri
Pre-requisiti
In questo articolo, useremo il database di esempio AdventureWorks., Execute the following query, and we get all product descriptions:
1
2
|
SELECT
FROM ..;
|
Let’s explore T-SQL RegEx in the following examples.,
Esempio 1: Filtra i risultati per la descrizione che inizia con il carattere A o L
Supponiamo di voler ottenere la descrizione del prodotto che inizia con il carattere A o L. Possiamo usare il formato % nella funzione Like.
Eseguire la seguente query e osservare l’output contiene le righe con il primo carattere di Una o L:
1
2
3
|
SELEZIONA
DA ..,
dove like ‘%’
|
Esempio 2: Filtrare i risultati in descrizione per con il primo carattere di Un e il secondo di carattere L
Nell’esempio precedente, abbiamo filtrato risultati per l’avvio di Un carattere, o L. Supponiamo di voler partire caratteri di descrizioni AL. Possiamo usare T-SQL RegEx % nell’operatore Like.,
1
2
3
|
SELECT
FROM ..
where like ‘%’
|
In the output, you can we get only records with first character A and second characters L.
We can specify multiple characters as well to filter records., The following query gives results for starting characters together:
1
2
3
|
SELECT
FROM ..,
dove like ‘%’
|
Esempio 3: Filtrare i risultati per la descrizione e l’avvio di carattere tra A e D
Nell’esempio precedente, abbiamo specificato un particolare carattere di partenza per filtrare i risultati. Possiamo specificare l’intervallo di caratteri usando le funzioni%.,
The following query gives results for description starting character from A and D:
1
2
3
|
SELECT
FROM ..
where like ‘%’
|
Similarly, we can specify multiple conditions for each character., Per esempio, il seguente query le seguenti ricerche:
- Il primo carattere deve essere Una e D alfabeti
- Il secondo personaggio dovrebbe essere da F e L alfabeto
1
2
3
|
SELEZIONA
DA ..,
dove come ‘ % ‘
|
Nell’output, puoi vedere che entrambi i set di risultati soddisfano entrambe le condizioni.
Esempio 4: Filtra i risultati per la descrizione e il carattere finale tra A e D
Negli esempi precedenti, abbiamo filtrato i dati per i caratteri iniziali. Potremmo voler filtrare anche per il carattere di posizione finale.
Negli esempi precedenti, notare la posizione dell’operatore percentuale ( % ). Abbiamo specificato un carattere percentuale alla fine dei caratteri di ricerca.,
1
2
3
|
SELECT
FROM ..
where like ‘%’
|
In the following query, we changed the position of percentage character at the beginning on search character., Cerca i caratteri con la seguente condizione:
- carattere Finale dovrebbe essere da G e S
1
2
3
|
SELEZIONA
DA ..
dove come ‘ % ‘
|
Nell’output, otteniamo il carattere che soddisfa la nostra condizione di ricerca.,
Esempio 5: Filtra i risultati per la descrizione lettere iniziali AF e carattere finale tra S
Rendiamolo un po ‘ complesso., Vogliamo ricerca utilizzando le seguenti condizioni:
- carattere di Partenza dovrebbe essere Una (prima) e F (secondo)
- carattere Finale dovrebbe essere S
Eseguire la seguente query e in uscita, possiamo vedere che soddisfa i nostri requisiti:
1
2
3
|
SELEZIONA
DA ..,
dove like ‘%’
|
Esempio 6: Filtrare i risultati in descrizione per partire le lettere di esclusione di Un a T
Nell’esempio seguente non vogliamo che il primo carattere di righe di output da a a T. Possiamo escludere i caratteri utilizzando il formato Come operatore.,
1
2
3
|
SELECT
FROM ..
where like ‘%’
|
In the output, we do not have any first characters from A to T.,r i record utilizzando le seguenti condizioni:
- Il primo carattere deve essere R e S carattere
- Si può avere qualsiasi combinazione dopo il primo carattere – %
- Si richiede il carattere P –
- dovrebbe essere seguita da un o –
- Si può avere qualsiasi altro personaggio dopo la precedente condizione- %
1
2
3
|
SELEZIONA
DA .,.
dove like ‘%%’
|
Esempio 8: maiuscole e minuscole ricerca utilizzando T-SQL RegEx funzioni
per impostazione predefinita, non riusciamo a caso sensibili risultati. Ad esempio, le seguenti query restituiscono lo stesso set di risultati:
Possiamo eseguire la ricerca case sensitive utilizzando i seguenti due modi:
-
Impostazione delle regole di confronto del database: ogni database in SQL Server ha una regole di confronto., Fare clic con il pulsante destro del mouse sul database e nella pagina delle proprietà, è possibile vedere le regole di confronto
Abbiamo SQL_Latin1_General_CP1_CI_AS esegue un comportamento case insensitive per il database. Possiamo cambiare queste regole di confronto in regole di confronto maiuscole e minuscole. Non è una soluzione semplice. Potrebbe creare problemi per le tue domande. Non è un modo consigliato a meno che non si richieda esplicitamente regole di confronto maiuscole / minuscole.
Possiamo usare le regole di confronto delle colonne con le funzioni RegEx T-SQL per eseguire la ricerca case sensitive.,
1234567Create table Caratteri(Alfabeto char(1))AndareInsert into Caratteri values (‘A’)Insert into Caratteri values (‘a’)AndareNella tabella, abbiamo la lettera in maiuscolo e minuscolo., If we run the following select statement, it returns both uppercase and lowercase:
12SELECT * from Characterswhere Alphabet like ‘%’Suppose we want to filter the uppercase letter in the result., We can use column collation as per the following query:
12select * from Characterswhere Alphabet COLLATE Latin1_General_BIN like ‘%’It returns uppercase letter A in the output.,e119a2″>
allo stesso modo, la query seguente restituisce lettera minuscola in uscita:
12select * from Caratteridove Alfabeto COLLATE Latin1_General_BIN like ‘%’ -
E ‘ possibile utilizzare il T-SQL RegEx funzione per trovare le lettere maiuscole e minuscole in uscita.,
vogliamo il seguente output:
- Il primo carattere deve essere in carattere maiuscolo C
- Il secondo carattere deve essere di carattere minuscolo h
- Resto dei caratteri può essere in ogni caso lettera
123SELEZIONADA ..,dove COLLATE Latin1_General_BIN like ‘%’
Esempio 9: Utilizzare T-SQL Regex per Trovare le Righe di Testo che Contengono un Numero
Siamo in grado di trovare una riga che contiene il numero nel testo. Ad esempio, vogliamo filtrare i risultati con righe che contengono il numero da 0 a 9 all’inizio.
Esempio 10: Usa T-SQL Regex per trovare un ID email valido
Esploriamo uno scenario pratico della funzione RegEX., Abbiamo una tabella cliente e contiene l’indirizzo email del cliente. Vogliamo identificare l’indirizzo email valido dai dati dell’utente. A volte, gli utenti commettono errori di battitura e inseriscono @@ invece di @ character.
Innanzitutto, crea la tabella di esempio e inserisci un indirizzo email in diversi formati.
Eseguire la seguente istruzione select con la funzione RegEx T-SQL ed elimina gli indirizzi email non validi.,
1
2
|
Select * from TSQLREGEX where email
LIKE ‘%%%’
|
We do not have following invalid email address in the list.
- ABC@@gmail.com
- ABC.DFG.LKF#@gmail.,com
Conclusione
In questo articolo, abbiamo esplorato le funzioni RegEx T-SQL per eseguire una ricerca utilizzando varie condizioni. Dovresti essere consapevole di questi per cercare in base a requisiti specifici.,
- Autore
- Post Recenti
È il creatore di una delle più grandi collezioni online gratuite di articoli su un singolo argomento, con la sua serie di 50 parti su SQL Server Always On Availability Groups. Sulla base del suo contributo alla comunità SQL Server, è stato riconosciuto con vari premi tra cui il prestigioso “Best author of the year” ininterrottamente nel 2020 e 2021 a SQLShack.,
Raj è sempre interessato a nuove sfide, quindi se avete bisogno di consulenza aiuto su qualsiasi argomento trattato nei suoi scritti, egli può essere raggiunto a rajendra.gupta16 @ gmail.,com
Visualizza tutti i messaggi di Rajendra Gupta
- timeout di Sessione in SQL Server Gruppi di Disponibilità alwayson – febbraio 8, 2021
- l’Esecuzione di piccoli e grandi aggiornamenti di versione per AWS RDS SQL Server – 29 gennaio 2021
- la Distribuzione di AWS RDS PostgreSQL istanze – 27 gennaio 2021