Maybaygiare.org

Blog Network

SQLShack

i DENNE artikkelen skal vi lære å bruke SQL LIKE operator, I SQL Server, ved hjelp av regulære uttrykk for å finne og / eller manipulere tekst. Vi starter med å lære symbolene og grunnleggende syntaks for å bruke jokertegn regulære uttrykk. Vi vil bruke tegnsett og repetisjon uttrykk for å lage fleksible matchende mønstre, og underveis, vi vil undersøke ulike måter å bruke LIGNENDE operatør. Og så, til slutt, i den siste delen av seksjonen, vil vi utforske noen av de vanligste og mest nyttige regulære uttrykk eksemplene.

SQL ER det mest brukte språket for å jobbe med databaser. Når du designer en rapport eller bruker BI eller et rapporteringsverktøy, bygger programvaren nesten helt sikkert EN SQL-spørring bak kulissene som kjører på databasen og returnerer de valgte dataene. Når vi leter etter spesifikke data eller dataene som passer til bestemte kriterier, gir where-klausulen verktøysettet du trenger. Dette gir et alternativ til å spørre bestemte rader som vi leter etter i stedet for hele tabellen.

Forutsetninger

Last Ned AdventureWorks2014-databasen her for å teste følgende t-SQL-prøver.

Komme i Gang

La OSS gå GJENNOM SQL-setninger ved HJELP av lignende søkeord og jokertegn. Så, la oss komme i gang med å lære OM SQL som operatør. Regulære uttrykk Er mønstre for å beskrive hvordan du matcher strenger I EN WHERE-setning. Mange programmeringsspråk støtter regulære uttrykk som bruker litt forskjellig syntaks fra det som brukes MED LIGNENDE operatør. I denne artikkelen, når vi refererer til regulære uttrykk, refererer vi til mønstrene som brukes med SQL – lignende operatoren

tabellen nedenfor inneholder de fire forskjellige jokertegn. DU kan også se ARTIKKELEN SQL strengfunksjoner For Data Munging (Wrangling) for flere eksempler.

Beskrivelse

et enkelt tegnsøk ikke innenfor det angitte området

Jokertegn

%

en streng med null eller flere tegn i søkemønsteret

et enkelt tegnsøk med det angitte mønsteret

bruke sql som med ‘%’ jokertegn

Følgende SQL-setning RETURNERER alle radene i persontabellen der etternavnet begynner med bokstaven A. La oss angi bokstaven A, det første tegnet som må være i strengen, og deretter bruke jokertegnet%, prosent.

1
2
3

velg topp 10 *
fra person.Person
hvor fornavn SOM ‘ a%’;

du vil se utdataene som viser topp 10 rader i persontabellen der fornavnet starter Med A og resten av tegnet er ukjent.

Bruke SQL SOM med ‘_’ jokertegn

jokertegnet, understreking, er for å matche et enkelt tegn. FØLGENDE SQL-setning finner alle telefonnumre som har et retningsnummer som starter med 7 og slutter på 8 i kolonnen telefonnummer. Vi har også inkludert % jokertegn på slutten av søkemønsteret, da vi ikke er opptatt av resten av strengverdiene.

1
2
3
4
5
6
7

velg p.fornavn,
p.etternavn,
telefonnummer
fra person.PersonPhone som ph
INDRE BLI Person.Person SOM p PÅ ph. BusinessEntityID = p.BusinessEntityID
HVOR ph.PhoneNumber SOM ‘7_8%’
REKKEFØLGE etter P.Etternavn;

utgangen viser at retningsnummeret som starter med 7 og slutter med 8 er oppført.

Bruke SQL SOM med jokertegn

Hakeparenteser f.eks tillate oss å identifisere flere enkelt tegn som ville være i den aktuelle posisjonen. For eksempel, la oss si å liste alle radene der fornavn tredje tegn begynner med I Eller K. I stedet for å skrive flere lignende forhold, kan vi plassere mønstermatching-settet i tredje posisjon og lukke det på torget. Søkemotoren ser først etter ‘ jeg ‘og ser deretter Etter ‘K’.

la oss utføre FØLGENDE SQL-setning

velg p.fornavn,
p.Etternavn,
Telefonnummer
Fra Person.PersonPhone som ph
INDRE BLI Person.PERSON som p på ph.BusinessEntityID = P.BusinessEntityID
hvor ph.PhoneNumber SOM ‘7_8%’ OG p.etternavn som ‘Ba%’
REKKEFØLGE etter P.Etternavn;

1
2
3
4
5
6
7

-SKRIFTLIG bruk ELLER tilstand. Det er mer som EN eller tilstand.

velg fornavn,
p.etternavn,

div>

telefonnummer
fra personen.PersonPhone som ph
INDRE BLI Person.Person som p på ph. BusinessEntityID = P. BusinessEntityID
HVOR Ph. PhoneNumber SOM ‘7_8%’ og (p. etternavn som ‘Bai%’ eller p.ETTERNAVN som ‘Bak%’)
REKKEFØLGE etter P.Etternavn;

1
2
3
4
6
7

i utgangen kan vi se at etternavnene der det tredje tegnet er ‘I’ eller ‘k’ er oppført

bruke sql som med ‘^’ jokertegn

følgende sql-setning Viser alle radene som ikke har bokstaven som starter med a til d I det første tegnet i etternavnet. For å som plasserer tilde karakter i den første posisjonen av mønsteret. Det blir IKKE forutsetningene.

1
2
3
4
5

velg p.fornavn,
p.etternavn
fra personen.Person p
Hvor Etternavn SOM ‘ % ‘
BESTILL etter p. etternavn;

nå, hvis jeg kjører spørringen ovenfor, ser Vi at alle navnene som kommer tilbake ikke har A, B, C eller D som deres første tegn.

Ved HJELP AV SQL IKKE SOM med jokertegn

FØLGENDE SQL-setning finner alle personene der kolonnen fornavn har mer enn 3 tegn.

1
2
3
4

velg distinkt
fornavn
fra personen.Person
hvor fornavn IKKE LIKER «;

ved hjelp av sql som med escape-klausulen

i følgende sql-setning brukes escape-klausulen til å unnslippe tegnet»!’for å negere betydningen av’ % ‘for å finne strengen’ 100% Fri ‘ i kolonnen col1 i temp-tabellen.

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’);
VELG *
FRA TEMP;
VELG *
fra temp
hvor col1 LIKER ‘ % 100!% Gratis% ‘ESCAPE’!’;

utgangslisten er bare de verdiene der søkemønsteret «100% Gratis» samsvarer med col1-uttrykket.

Følgende SQL-setning trekker ut alle ansatte som har et telefonnummer formatert som tre-tre-fire sifre med bindestreker i mellom (999-999-9999). Mønsteret blir deretter sammenlignet med phonenumber kolonne for å utlede nasjonale eller internasjonale kategorier.

saksuttrykket evalueres for det spesifikke mønsteret for å utlede telefonkategoritypen.

1
2
3
4
5
6
7
8
9

velg fornavn,
p.etternavn,
ph.phonenumber som ‘–‘ deretter ‘innenriks telefonnummer’
annet ‘internasjonalt telefonnummer’
india telefonnummer
fra personen.PersonPhone som ph
INDRE BLI Person.PERSON SOM p på ph.BusinessEntityID = P.BusinessEntityID
BESTILL etter P.Etternavn;

i utgangen kan vi se at nummeret er klassifisert som innenlands eller internasjonalt. Phonenumber-kolonnen evalueres MED lignende-operatoren ved hjelp av firkantbraketten. Tallet null til ni i første tegnposisjon evalueres for matchende mønster null til ni, et hvilket som helst tall fra null til ni i andre tegnposisjon og tredje og deretter fjerde tegnposisjon må være en dash og lignende logikk brukes på resten av tegnene.

Bruke SQL SOM med dynamisk SQL

FØLGENDE SQL-setning returnerer alle ansatte der etternavnet samsvarer med mønsterbarben. Mønsteret er dynamisk opprettet og sammenlignet mot uttrykket.

1
2
3
4
5
6
7

angir @elastname varchar(20)= ‘barb’;
velg p.fornavn,
p.etternavn,

div>

den.By
Fra Personen.Person p
BLI Med I Personen.Adresse på P. BusinessEntityID = ‘S. AddressID
HVOR P. Etternavn SOM’ %’+ @ ELastName+’%’;

merk: som standard injiserer char etterfølgende emner avhengig av lengden på feltet. Bruk RTRIM til å undertrykke de etterfølgende blankene, hvis du bruker char-datatypen.

i FØLGENDE SQL-setning er feltet @eLastName av datatypen char. Du kan se en bruk AV RTRIM-funksjonen for a trimme de bakre blankene.

1
2
3
4
5
6
7

angir @elastname char(20)= ‘barb’;
velg p.fornavn,
p.etternavn,

div>

den.By
Fra Personen.Person p
BLI Med I Personen.Adresse på P. BusinessEntityID = ‘S. AddressID
HVOR P. Etternavn SOM ‘%’+RTRIM(@ELastName)+’%’;

Ved HJELP AV SQL Som MED EN IF-setning

følgende SQL-setning evalueres inngangsverdien for det spesifikke mønsteret i betingelsesklausulen ved HJELP AV IF-setningen.

1
2
3
4
5

declare @rulename nvarchar(maks)= ‘sql sever 2019 ctp er tilgjengelig for forhåndsvisning’;
HVIS @RuleName SOM ‘SQL Sever % CTP er tilgjengelig for forhåndsvisning’
SKRIV ut ‘gyldig inngang bra!’;
ELSE
SKRIV ut ‘ ikke en gyldig god!’;

inngangsstrengen evalueres for bestemte mønstre ved HJELP AV SQL-lignende jokertegnuttrykk og returnerer gyldig inngangsstreng.

Det er alt for nå!

Sammendrag

Så langt har vi diskutert ulike tips og fire forskjellige jokertegn ( % ,_,, og^] som er tilgjengelige MED SQL LIKE operatoren. Det er en flott søketeknikk for å matche streng av tegn med de angitte mønstrene eller hvor vi ikke er helt sikre på hva du søker aka fuzzy search. De tilgjengelige jokertegnene gjør LIKE-operatoren mer fleksibel. Jeg håper du likte denne artikkelen PÅ SQL LIKE operator I SQL Server. Føl deg fri stille spørsmål i kommentarfeltet nedenfor.

  • Forfatter
  • Siste Innlegg
Prashanth Jayaram
jeg Er En Database teknolog som har 11+ år med rik, hender-på erfaring på database teknologier. Jeg Er Microsoft Sertifisert Profesjonell og støttet med En Grad I Master Of Computer Application.
min spesialitet ligger i å designe & implementere løsninger Med høy tilgjengelighet og DB-Migrasjon på tvers av PLATTFORMER. Teknologiene som for tiden jobber med ER SQL Server, PowerShell, Oracle og MongoDB.
Vis alle innlegg av Prashanth Jayaram

Prashanth Jayaram

Siste innlegg Av Prashanth Jayaram (se alle)
  • en rask oversikt over database revisjon I SQL – januar 28, 2021
  • hvordan sette opp azure Datasynkronisering mellom azure sql-Databaser Og Lokal Sql Server – 20. januar 2021
  • slik utfører du import/eksport av azure sql database ved hjelp av powershell – 14. januar 2021

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.