Maybaygiare.org

Blog Network

sqlshack

tässä artikkelissa aiomme oppia käyttämään SQL LIKE operator, in SQL Server, käyttämällä säännöllisiä lausekkeita löytää ja / tai manipuloida tekstiä. Aloitamme opettelemalla symbolit ja perus syntaksi käyttää yleismerkki säännöllisiä lausekkeita. Käytämme merkistöjä ja toistolauseita luodaksemme joustavia sovituskuvioita, ja matkan varrella tutkimme erilaisia tapoja käyttää vastaavaa operaattoria. Ja sitten, lopuksi, jälkimmäisessä osassa, tutkimme joitakin yleisimpiä ja hyödyllisimpiä säännöllisen lausekkeen esimerkkejä.

SQL on yleisimmin käytetty kieli tietokantojen kanssa työskentelyyn. Kun suunnittelet raportin tai käytät BI-tai mitä tahansa raportointityökalua, ohjelmisto rakentaa lähes varmasti SQL-kyselyn kulissien takana, joka toimii tietokannassa ja palauttaa valitsemasi tiedot. Kun etsimme tiettyjä tietoja tai tietoja, jotka sopivat tiettyihin kriteereihin, missä-lauseke tarjoaa tarvitsemasi työkalusarjan. Tämä antaa mahdollisuuden kysellä tiettyjä rivejä, joita etsimme koko taulukon sijasta.

ennakkoedellytykset

Lataa AdventureWorks2014-tietokanta tästä testataksesi seuraavia T-SQL-näytteitä.

alku

käykäämme läpi SQL-lauseet samankaltaisilla avainsanoilla ja yleismerkeillä. Niin, aloitetaan oppiminen SQL kuten operaattori.

SQL: n kaltaiset Jokerimerkkiesimerkit

Säännölliset lausekkeet ovat kuvioita, joilla kuvataan missä-lausekkeessa olevien merkkijonojen vastaavuutta. Monet ohjelmointikielet tukevat säännöllisiä lausekkeita, jotka käyttävät hieman erilaista syntaksia kuin mitä vastaavan operaattorin kanssa käytetään. Tässä artikkelissa, kun viittaamme säännöllisiin lausekkeisiin, viittaamme SQL: n kanssa käytettäviin kuvioihin kuten operaattori

seuraava taulukko sisältää neljä erilaista jokerimerkkiä. Voit myös viitata artikkeliin SQL string functions for Data Munging (Wrangling) saadaksesi lisää esimerkkejä.

kuvaus

mikä tahansa merkkijono, jossa on nolla tai useampia merkkejä hakukuviossa

jokerimerkit

mikä tahansa yhden merkin haku määritellyllä mallilla

mikä tahansa yhden merkin haku määritellyllä alueella

käyttäen SQL: ää kuten ” % ” – jokerimerkin kanssa

seuraavat SQL statement palauttaa kaikki rivit henkilötaulukon, jossa heidän sukunimensä alkaa kirjaimella A. olkaamme määrittää kirjain ”A”, ensimmäinen merkki, joka on oltava merkkijono ja sitten käyttää yleismerkki”%”, prosenttia.

1
2
3

valitse Top 10 *
henkilöltä.Henkilö
, jossa etunimi kuten ” A%”;

näet tulosteen, joka listaa henkilötaulukon 10 parasta riviä, joissa etunimi alkaa A: lla ja Muu merkki on tuntematon.

käyttämällä SQL: ää kuten ” _ ” – jokerimerkin kanssa

jokerimerkki, alleviivaus, vastaa mitä tahansa yksittäistä merkkiä. Seuraava SQL-lauseke löytää puhelinnumerosarakkeesta kaikki puhelinnumerot, joiden suuntanumero alkaa numerosarakkeesta 7 ja päättyy numerosarakkeeseen 8. Olemme myös sisällyttäneet % – jokerimerkin hakukuvion loppuun, koska emme ole huolissamme lopuista merkkijonoarvoista.

1
2
3
4
5
6
7

valitse p.etunimi,
p.sukunimi,
fonenumero
henkilöltä.Henkilöpuhelin pH
SISÄHENKILÖ.Person AS p on ph. BusinessEntityID = p.Businessentyid
missä ph.PhoneNumber kuten”7_8%”
ORDER BY P.sukunimi;

tuotos osoittaa, että sen suuntanumero alkaa 7: llä ja päättyy 8: aan.

käyttämällä SQL: ää kuten yleismerkkien kanssa

hakasulkeissa esim. Esimerkiksi sanotaan luetella kaikki rivit, joissa etunimet kolmas merkki alkaa I tai K. Sen sijaan, että kirjoittaisimme useita samanlaisia ehtoja, voimme sijoittaa kuvion matching asetettu kolmanteen asentoon ja sulkea sen neliön. Kyselymoottori etsii ensin ”I”: n ja sitten ”K”: n.

suoritetaan seuraava SQL-lausuma

valitse p.etunimi,
p.Sukunimi,
Fonenumero
henkilöltä.Henkilöpuhelin pH
SISÄHENKILÖ.Henkilö kuin p ph.BusinessEntityID = P.BusinessEntityID
missä ph.PhoneNumber kuten”7_8%”ja p.sukunimi kuten” Ba% ”
järjestys p.sukunimi;

1
2
3
4
5
6
7

yllä oleva kysely voidaan re-kirjoitettu käyttäen tai kunnossa. Se on ennemminkin sairaus.

valitse p.etunimi,
p.sukunimi,
fonenumero
henkilöltä.Henkilöpuhelin pH
SISÄHENKILÖ.Henkilö kuin p pH. BusinessEntityID = P. BusinessEntityID
missä ph.PhoneNumber kuten ”7_8%” ja (p.sukunimi kuten ”Bai%” tai p.sukunimi kuten”Bak%”)
järjestys p.sukunimi;

1
2
3
4
5
6
7

ulostulossa on lueteltu sukunimet, joissa kolmas merkki on”I”tai” k

käyttäen SQL: ää kuten ” ^ ” – jokerimerkin kanssa

seuraava SQL-lauseke näyttää kaikki rivit, joilla ei ole sukunimensä ensimmäisessä merkissä kirjaimella A-D alkavaa kirjainta. Jotta tämä paikka tilde merkki ensimmäisessä asennossa kuvio. Siitä tulee ei-edellytykset.

1
2
3
4
5

valitse P.etunimi,
p.sukunimi
henkilöltä.Henkilö p
missä sukunimi kuten ” % ”
järjestys p.sukunimi;

nyt, jos suoritan yllä olevan kyselyn, huomaamme, että kaikilla takaisin tulevilla nimillä ei ole A: ta, B: tä, C: tä tai D: tä ensimmäisenä merkkinä.

käyttämällä SQL ei kuten yleismerkkien kanssa

seuraava SQL-lauseke löytää kaikki henkilöt, joiden etunimisarakkeessa on enemmän kuin 3 merkkiä.

1
2
3
4

valitse erillinen
etunimi
henkilöstä.Henkilö
, jonka etunimi ei pidä ”;

tuotos listaa vain ne nimet, joissa etunimen pituus on yli 3

käyttäen SQL-lauseketta kuten pakotelauseketta

seuraavassa SQL-lausekkeessa, pakotelauseketta käytetään merkin pakenemiseen”!’mitätöi’ % ’- sanan merkitys löytääksesi merkkijonon ’100% vapaa’ temp-taulukon sarakkeesta col1.

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’);
GO
SELECT *
from TEMP;
SELECT *
from temp
WHERE col1 LIKE ” %100!% Vapaa % ’pako’!”;
GO

lähtö listaa vain ne arvot, joissa hakukuvio ”100% vapaa” vastaa col1-ilmaisua.

käyttäen SQL: ää kuten TAPAUSLAUSEELLA

seuraava SQL-lausunto vetää pois kaikki työntekijät, joiden puhelinnumero on muotoiltu kuin kolme-kolme-neljä numeroa, joiden välissä on viivoja (999-999-9999). Tämän jälkeen kuviota verrataan fonenumerosarakkeeseen, jolloin saadaan kotimaiset tai kansainväliset Kategoriat.

case-lauseke arvioidaan sille ominaiselle kuviolle, jolla saadaan puhelinluokkatyyppi.

valitse p.etunimi,
p.sukunimi,
phonenumber,
case when pH.PhoneNumber like ” — ”then” domestic phone number ”
else ”international phone number”
India PhoneNumber
henkilöltä.Henkilöpuhelin pH
SISÄHENKILÖ.Person AS p on ph. BusinessEntityID=P.BusinessEntityID
ORDER BY p.sukunimi;

1
2
3
4
5
6
7
8
9

tuotoksessa näkyy, että Numero on luokiteltu kotimaiseksi tai kansainväliseksi. Puhelinlukusaraketta arvioidaan vastaavalla operaattorilla käyttäen neliösaraketta. Ensimmäisen merkkiasennon luku nollasta yhdeksään arvioidaan, jotta saadaan täsmäytettyä kuvio nollasta yhdeksään, mikä tahansa luku nollasta yhdeksään toisen merkin asemassa ja kolmannessa ja sitten neljännen merkin kannan on oltava viiva ja samanlaista logiikkaa sovelletaan muihin merkkeihin.

käyttämällä SQL: ää kuten dynaamisella SQL: llä

seuraava SQL-lauseke palauttaa kaikki työntekijät, joiden sukunimi vastaa kaavaa Barb. Kuvio luodaan dynaamisesti ja sitä verrataan ilmaisuun.

1
2
3
4
5
6
7

jossa @elastname varchar(20)= ”Barb”;
valitse p.etunimi,
p.sukunimi,
the.Kaupunki
henkilöltä.Henkilö p
liity henkilöön.Osoite P. BusinessEntityID = ”s. AddressID
missä p. sukunimi kuten” % ” + @ELastName+”%”;

tuotosluettelossa täsmäävät rivit määritetylle kuviolle Barb

huomautus: oletuksena char pistää perään aihioita riippuen kentän pituudesta. Käytä RTRIM: ää vaimentaaksesi perässä olevat tyhjät kohdat, jos käytät char-datatyyppiä.

seuraavassa SQL-lauseessa @eLastName-kenttä on char-tietotyyppiä. Näet käytön RTRIM funktio leikata perään aihioita.

1
2
3
4
5
6
7

jossa @elastname char(20)= ”Barb”;
valitse P.etunimi,
p.sukunimi,
the.Kaupunki
henkilöltä.Henkilö p
liity henkilöön.Osoite P. BusinessEntityID = ”s. AddressID
missä p. sukunimi kuten” % ” +RTRIM (@ELastName)+”%”;

käyttäen SQL-lauseketta kuten IF-lausekkeella

seuraava SQL-lauseke, tuloarvo arvioidaan ehtolausekkeessa olevan tietyn kuvion osalta käyttäen IF-lauseketta.

1
2
3
4
5

declare @rulename nvarchar(Max)= ”SQL Sever 2019 CTP is available for preview”;
IF @RuleName LIKE ”SQL Sever % CTP is available for preview”
PRINT ” valid input good!”;
ELSE
PRINT ” not a valid good!”;

syötemerkkijono arvioidaan tietyille kuvioille käyttäen SQL: n kaltaista jokerimerkkilauseketta ja palauttaa kelvollisen syötemerkkijonon.

That ’ s all for now!

Yhteenveto

tähän mennessä on keskusteltu erilaisista vinkeistä ja neljästä eri jokerimerkistä ( % ,_, ja^], jotka ovat saatavilla SQL: n kaltaisella operaattorilla. Se on loistava hakutekniikka, jolla sovitetaan merkkijonoja määriteltyihin kuvioihin tai jossa emme ole aivan varmoja siitä, mitä etsit eli sumea haku. Saatavilla olevat jokerimerkit tekevät vastaavasta operaattorista joustavamman. Toivottavasti nautit tämän artikkelin SQL kuten operaattori SQL Server. Voit vapaasti kysyä kysymyksiä kommenteissa alla.

  • Author
  • Recent Posts
  • Prashanth Jayaram
    I ’ m a Database technologist having 11+ years of rich, hands-tietokantateknologioista. Olen Microsoft Certified Professional ja tukena tutkinto Master of Computer Application.
    erikoisuuteni on & korkean käytettävyyden ratkaisujen ja monialustaisen DB-migraation toteuttaminen. Tällä hetkellä toimivia teknologioita ovat SQL Server, PowerShell, Oracle ja MongoDB.
    View all posts by Prashanth Jayaram

    Prashanth Jayaram
    Uusimmat viestit Prashanth Jayaram (see all)
    • a quick overview of database audit in SQL – January 28, 2021
    • How to set up Azure Data Sync between Azure SQL databases and On-Premises SQL Server – January 20, 2021
    • How to perform Azure SQL database Import/Export operations using PowerShell – January 14, 2021

    Vastaa

    Sähköpostiosoitettasi ei julkaista.