Articles

SQLShack (Italiano)

Posted by admin

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:

  1. 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.,

    1
    2
    3
    4
    5
    6
    7

    Create table Caratteri
    (Alfabeto char(1)
    )
    Andare
    Insert into Caratteri values (‘A’)
    Insert into Caratteri values (‘a’)
    Andare

    Nella tabella, abbiamo la lettera in maiuscolo e minuscolo., If we run the following select statement, it returns both uppercase and lowercase:

    1
    2

    SELECT * from Characters
    where Alphabet like ‘%’

    Suppose we want to filter the uppercase letter in the result., We can use column collation as per the following query:

    1
    2

    select * from Characters
    where 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:

    1
    2

    select * from Caratteri
    dove Alfabeto COLLATE Latin1_General_BIN like ‘%’

  2. 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
    1
    2
    3

    SELEZIONA
    DA ..,
    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
Come un certificato MCSA e Microsoft Certified Trainer a Gurgaon, in India, con 13 anni di esperienza, Rajendra collabora con una serie di grandi imprese di messa a fuoco sull’ottimizzazione delle prestazioni, il monitoraggio, l’alta disponibilità e disaster recovery per le strategie e l’attuazione., È autore di centinaia di articoli autorevoli su SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git e tecnologie correlate che sono stati visti da oltre 10 milioni di lettori fino ad oggi.
È 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

Ultimi messaggi di Rajendra Gupta (vedi tutti)
  • 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

Leave A Comment