Articles

SQLShack (Română)

Posted by admin

Acest articol explorează T-SQL RegEx comenzi SQL Server pentru efectuarea de căutare de date folosind diverse condiții.

Introducere

stocăm date în mai multe formate sau tipuri de date în tabelele SQL Server. Să presupunem că aveți o coloană de date care conține date de șir în format alfanumeric. Noi folosim ca operator logic pentru a căuta caracter specific în șirul și de a prelua rezultatul., De exemplu, în tabelul Angajat, ne-o dorim pentru a filtra rezultatele și de a lua doar angajat al cărui nume începe cu caracterul A.

Vom folosi expresii regulate pentru a defini modele specifice în T-SQL într-un ASTFEL de operator și filtra rezultatele în funcție de anumite condiții. De asemenea, numim aceste expresii regulate ca funcții T-SQL RegEx. În acest articol, vom folosi termenul T-SQL RegEx funcții pentru expresii regulate.,

putem avea mai multe tipuri de expresii regulate:

  • Alfabetic RegEx
  • Numerice RegEx
  • Caz de Sensibilitate RegEx
  • Caractere Speciale RegEx
  • RegEx pentru a Exclude Caractere

Pre-condiție

În acest articol, vom folosi AdventureWorks bază de date eșantion., Execute the following query, and we get all product descriptions:

1
2

SELECT
FROM ..;

Let’s explore T-SQL RegEx in the following examples.,

Exemplul 1: Filtrați rezultatele pentru Descriere începând cu caracterul A sau l

Să presupunem că dorim să obținem descrierea produsului începând cu caracterul A sau L. putem folosi formatul % în funcția Like.

Executați următoarea interogare și să respecte rezultatul va contine randuri cu primul caracter sau L:

1
2
3

SELECTAȚI
DE la ..,
în cazul în care ca ‘%’

Exemplul 2: Filtru de rezultate pentru descrierea cu primul caracter și al doilea personaj L

În exemplul anterior, am filtrat rezultatele pentru a începe Un personaj, sau L. să Presupunem că vrem incepand de caractere din descrierile AL. Putem folosi T-SQL RegEx % în operatorul similar.,

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 ..,
în cazul în care ca ‘%’

Exemplul 3: Filtru de rezultate pentru descrierea și pornind de caracter între a și D

În exemplul anterior, am specificat un anumit incepand de caracter pentru a filtra rezultatele. Putem specifica intervalul de caractere folosind funcțiile%.,

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., De exemplu, mai jos de interogare are următoarele căutări:

  • primul caracter trebuie să fie între a și D alfabete
  • Al doilea caracter ar trebui să fie de F și Eu alfabetul
1
2
3

SELECTAȚI
DE la ..,
unde ca ‘ % ‘

În ieșire, puteți vedea că ambele set de rezultate satisface ambele condiții.

Exemplul 4: Filtrați rezultatele pentru descriere și caracter final între A și D

în exemplele anterioare, am filtrat datele pentru caracterele de pornire. S-ar putea să dorim să filtrăm și caracterul poziției finale.

în exemplele anterioare, notați poziția operatorului procentual ( % ). Am specificat un caracter procentual la sfârșitul caracterelor de căutare.,

1
2
3

SELECT
FROM ..
where like ‘%’

In the following query, we changed the position of percentage character at the beginning on search character., Se pare pentru caractere, cu următoarea condiție:

  • se Încheie caracter ar trebui să fie de la G și S
1
2
3

SELECTAȚI
DE la ..
unde ca” % „

În ieșire, obținem caracterul care satisface starea noastră de căutare.,

exemplul 5: Filtrați rezultatele pentru Descriere începând literele AF și terminând caracterul între S

să facem un pic complex., Vrem să căutați folosind următoarele condiții:

  • Pornind de caracter ar trebui să fie O (prima) și F (a doua)
  • se Încheie caracter ar trebui S

Executați următoarea interogare, și în rezultat, putem vedea că îndeplinește cerința noastră:

1
2
3

SELECTAȚI
DE la ..,
în cazul în care ca ‘%’

Exemplul 6: Filtru de rezultate pentru descrierea incepand de litere, excluzând O a T

În exemplul următor, nu ne dorim în primul rând caracterul de ieșire rânduri de la a la T. putem exclude caractere folosind format în Astfel de operator.,

1
2
3

SELECT
FROM ..
where like ‘%’

In the output, we do not have any first characters from A to T.,r înregistrări folosind următoarele condiții:

  • primul caracter trebuie să fie din R și S de caractere –
  • putem avea orice combinație după primul caracter – %
  • Avem nevoie de P caractere
  • ar trebui să fie urmată de nici un sau –
  • poate fi orice alt personaj după starea anterioară- %
1
2
3

SELECTAȚI
DE la .,.
în cazul în care ca ‘%%’

Exemplul 8: căutare sensibilă folosind T-SQL RegEx funcții

în mod implicit, nu facem caz sensibil rezultatele. De exemplu, următoarele interogări de a reveni la același set de rezultate:

putem efectua o căutare sensibilă folosind următoarele două moduri:

  1. Date de colaționare de setare: Fiecare bază acoperire de date în SQL Server au o colaționare., Faceți clic dreapta pe baza de date și în proprietăți pagină, puteți vedea colaționare

    Avem SQL_Latin1_General_CP1_CI_AS efectuează caz insensibil comportament pentru o bază de date. Putem schimba această colaționare la colaționare sensibilă la caz. Nu este o soluție simplă. S-ar putea crea probleme pentru întrebările dumneavoastră. Nu este un mod recomandat decât dacă solicitați în mod explicit colaționarea sensibilă la caz.

    putem folosi colaționarea coloanelor cu funcțiile T-SQL RegEx pentru a efectua căutarea sensibilă la majuscule.,

    1
    2
    3
    4
    5
    6
    7

    Creați tabelul de Caractere
    (Alfabet char(1)
    )
    Go
    Introduce în Personaje valori („A”)
    Introduce în Personaje valori („a”)
    Go

    În masă, vom avea o scrisoare în litere mari și litere mici., 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″>

    în mod Similar, următoarea interogare returnează literă mică la ieșire:

    1
    2

    select * from Caractere
    în cazul în care Alfabetul ASAMBLARE Latin1_General_BIN ca ‘%’

  2. putem folosi T-SQL RegEx funcția de a găsi atât de sus și litere mici în partea de ieșire.,

    vrem următorul rezultat:

    • primul caracter să fie literă mare C
    • Al doilea caracter ar trebui să fie literă mică h
    • Restul personajelor poate fi în orice scrisoare de caz
    1
    2
    3

    SELECTAȚI
    DE la ..,
    unde ASAMBLARE Latin1_General_BIN ca ‘%’

Exemplul 9: Utilizarea T-SQL Regex pentru a Găsi un Text Rânduri care Conțin un Număr

putem găsi un rând care conține numărul, precum și în text. De exemplu, dorim să filtrăm rezultatele cu rânduri care conțin numărul 0 la 9 la început.

exemplul 10: utilizați T-SQL Regex pentru a găsi ID-ul de e-mail valid

să explorăm un scenariu practic al funcției RegEX., Avem un tabel de client, și deține adresa de e-mail de client. Dorim să identificăm o adresă de e-mail validă din datele utilizatorului. Uneori, utilizatorii fac greșeală de greșeală și introduc @@ în loc de @ character. mai întâi, creați tabelul de eșantioane și introduceți o adresă de e-mail în el în diferite formate.

executați următoarea instrucțiune select cu funcția T-SQL RegEx și elimină adresele de e-mail nevalide.,

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

Concluzie

În acest articol, am explorat T-SQL RegEx funcții pentru a efectua o căutare, folosind diverse condiții. Ar trebui să fiți conștienți de acestea pentru a căuta pe baza cerințelor specifice.,

  • Autor
  • Mesajele Recente
Ca un MCSA certificate și Microsoft Certified Trainer în Gurgaon, India, cu 13 ani de experiență, Rajendra lucrează pentru o varietate de companii mari, concentrându-se pe optimizarea performanței, de monitorizare, de înaltă disponibilitate și recuperare în caz de dezastru și strategiile de punere în aplicare., Este autorul a sute de articole autoritare despre SQL Server, Azure, MySQL, Linux, Power BI, Tuning de performanță, AWS/Amazon RDS, Git și tehnologii conexe care au fost vizualizate de cititorii 10m până în prezent.
el este creatorul uneia dintre cele mai mari colecții online gratuite de articole pe un singur subiect, cu seria sa de 50 de părți pe SQL Server întotdeauna pe grupuri de disponibilitate. Pe baza contribuției sale la comunitatea SQL Server, el a fost recunoscut cu diverse premii, inclusiv prestigiosul „cel mai bun autor al anului” continuu în 2020 și 2021 la sqlshack.,
Raj este întotdeauna interesat de noi provocări, așa că dacă aveți nevoie de ajutor de consultanță cu privire la orice subiect acoperit în scrierile sale, el poate fi contactat la rajendra.gupta16 @ gmail.,com
Vezi toate posturile de Rajendra Gupta

Ultimele posturi de Rajendra Gupta (vezi toate)
  • timeout Sesiune în SQL Server Mereu Pe Grupuri de Disponibilitate – februarie 8, 2021
  • Efectuarea minore și majore versiune upgrade-uri pentru AWS RDS SQL Server – 29 ianuarie 2021
  • Implementarea AWS RDS PostgreSQL cazuri – 27 ianuarie 2021

Leave A Comment