ebben a cikkben megtanuljuk, hogyan kell használni az SQL LIKE operátort az SQL Server rendszerben, reguláris kifejezések használatával a szöveg megkereséséhez és/vagy manipulálásához. Kezdjük azzal, hogy megtanuljuk a helyettesítő reguláris kifejezések használatának szimbólumait és alapvető szintaxisát. Karakterkészleteket és ismétlési kifejezéseket fogunk használni rugalmas illesztési minták létrehozásához, és az út mentén megvizsgáljuk a hasonló operátor használatának különböző módjait. Végül a szakasz második részében a leggyakoribb és leghasznosabb reguláris kifejezési példákat tárjuk fel.
az SQL a leggyakrabban használt nyelv az adatbázisok kezeléséhez. Amikor jelentést tervez, vagy BI-t vagy bármilyen jelentéskészítő eszközt használ, a szoftver szinte biztosan felépít egy SQL lekérdezést a színfalak mögött, amely az adatbázisban fut, és visszaadja a kiválasztott adatokat. Ha konkrét adatokat vagy konkrét kritériumoknak megfelelő adatokat keresünk, a where záradék biztosítja a szükséges eszközkészletet. Ez lehetőséget ad arra, hogy a teljes táblázat helyett konkrét sorokat kérdezzünk meg.
előfeltételek
töltse le az AdventureWorks2014 adatbázist itt a következő T-SQL minták teszteléséhez.
első lépések
nézzük végig az SQL utasításokat a LIKE kulcsszó és a helyettesítő karakterek használatával. Tehát kezdjük el megismerni az SQL-t, mint az operátort.
SQL-szerű helyettesítő karakter példák használata
a reguláris kifejezések olyan minták, amelyek leírják, hogyan kell illeszteni a karakterláncokat egy WHERE záradékban. Számos programozási nyelv támogatja a reguláris kifejezéseket, amelyek kissé eltérő szintaxist használnak, mint a hasonló operátor. Ebben a cikkben, amikor reguláris kifejezésekre utalunk, az SQL LIKE operátorral használt mintákra utalunk
az alábbi táblázat a négy különböző helyettesítő karaktert tartalmazza. Azt is olvassa el a cikket SQL string függvények adatok Munging (Wrangling) további példákat.
helyettesítő karakterek |
leírás |
% |
bármilyen karakterlánc nulla vagy több karakterrel a keresési mintában |
bármilyen egykarakteres keresés a megadott mintával |
|
bármilyen egykarakteres keresés a megadott tartományon belül |
|
bármilyen egykarakteres keresés nem a megadott tartományon belül |
SQL használata, mint a ‘%’ helyettesítő karakter
a következő Adja meg az ‘a’ betűt, az első karaktert, amelynek a karakterláncban kell lennie, majd használja a ‘ % ‘ helyettesítő karaktert, a százalékot.
1
2
3
|
válassza ki a top 10 *
személyt.Személy
ahol keresztnév mint ‘ a%’;
|
látni fogja a kimenetet, amely felsorolja a személy táblázat felső 10 sorát, ahol a keresztnév A-val kezdődik, a karakter többi része pedig ismeretlen.
SQL használata, mint a ‘_’ helyettesítő karakter
a helyettesítő karakter, aláhúzás, bármely karakter illesztésére szolgál. A következő SQL utasítás megtalálja az összes olyan telefonszámot, amelynek körzetszáma 7-től 8-ig kezdődik a phonenumber oszlopban. A keresési minta végén % helyettesítő karaktert is felvettünk, mivel nem foglalkozunk a karakterlánc többi értékével.
1
2
3
4
5
6
7
|
válassza ki a P.keresztnevet,
p.vezetéknév,
telefonszám
személytől.PersonPhone mint ph
belső csatlakozás személy.Személy, mint p a ph. BusinessEntityID = p.BusinessEntityID
ahol ph. PhoneNumber LIKE ‘7_8%’
sorrend p. LastName szerint;
|
a kimenet azt mutatja, hogy a 7-tel kezdődő és 8-mal végződő körzetszám fel van sorolva.
SQL használata, mint a helyettesítő karakterekkel
szögletes zárójelek pl. lehetővé teszik számunkra, hogy több olyan karaktert azonosítsunk, amelyek az adott helyzetben lennének. Tegyük fel például, hogy felsoroljuk azokat a sorokat, ahol az első nevek harmadik karakter I vagy K betűvel kezdődik. Ahelyett, hogy több hasonló feltételt írnánk, a mintaillesztési készletet a harmadik pozícióba helyezhetjük, és bezárhatjuk a négyzetbe. A lekérdező motor először az ‘I’ – t, majd a ‘K’ – t keresi.
hajtsuk végre a következő SQL utasítást
1
2
3
4
5
6
7
|
válassza ki a P.keresztnév,
p.Vezetéknév,
telefonszám
személytől.PersonPhone mint ph
belső csatlakozás személy.Személy mint p a ph.BusinessEntityID = p.BusinessEntityID
ahol ph.PhoneNumber mint ‘7_8%’ és P.lastname mint ‘Ba%’
sorrend p.LastName;
|
a fenti lekérdezés újra-írásbeli vagy feltétel. Ez inkább egy vagy állapot.
1
2
3
4
5
6
7
|
válassza ki a P.keresztnevet,
p.vezetéknév,
div> telefonszám
a személytől.PersonPhone mint ph
belső csatlakozás személy.Személy mint p a ph.BusinessEntityID = p.BusinessEntityID
ahol a ph.Ph.PhoneNumber mint ‘7_8%’ és (P.vezetéknév mint ‘Bai%’ vagy p.lastname like ‘Bak%’)
sorrend p.LastName;
|
a kimeneten láthatjuk, hogy a vezetéknevek, ahol a harmadik karakter ‘I’ vagy ‘k’ szerepel
SQL használata, mint a ‘^’ helyettesítő karakter
a következő SQL utasítás megjeleníti azokat a sorokat, amelyeknek nincs A-tól D-ig kezdődő betűje a vezetéknevük első karakterében. Annak érdekében, hogy a tilde karakter a minta első pozíciójába kerüljön. Ez lesz a nem előfeltétel.
1
2
3
4
5
|
válassza ki a P.keresztnevet,
p.vezetéknév
a személytől.Személy p
ahol vezetéknév LIKE ‘ % ‘
sorrend p. vezetéknév szerint;
|
most, ha futtatom a fenti lekérdezést, látni fogjuk, hogy az összes visszatérő névnek nincs A, B, C vagy D első karaktere.
az SQL használata nem olyan, mint a helyettesítő karaktereknél
a következő SQL utasítás megtalálja azokat a személyeket, ahol a keresztnév oszlop több mint 3 karakterből áll.
1
2
3
4
|
válasszon külön
keresztnév
a személytől.Személy
ahol a keresztnév nem tetszik “;
|
a kimeneti lista csak azokat a neveket tartalmazza, ahol a keresztnév hossza meghaladja a 3-at
az SQL használatával, mint az Escape záradékkal
a következő SQL utasításban az Escape záradékot használják a karakter elkerülésére ‘!’tagadni a’ % ‘ jelentését, hogy megtalálja a ‘100% Free’ karakterláncot a temp táblázat col1 oszlopában.
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
ahol col1 LIKE ‘%100!% Ingyenes % ‘menekülés’!’;
GO
|
a kimeneti lista csak azokat az értékeket tartalmazza, ahol a “100% – ban szabad” keresési minta megegyezik a col1 kifejezéssel.
SQL használata, mint a CASE utasításnál
a következő SQL utasítás kihúzza az összes olyan alkalmazottat, akiknek telefonszáma három-három-négy számjeggyel van formázva, kötőjelekkel (999-999-9999). A mintát ezután összehasonlítjuk phonenumber oszlop a hazai vagy nemzetközi kategóriák levezetéséhez.
a case kifejezést az adott mintára értékeljük, hogy levezetjük a telefon kategória típusát.
1
2
3
4
5
6
7
8
9
|
válassza ki a p.keresztnevet,
p.vezetéknév,
phonenumber,
eset, amikor pH.PhoneNumber mint ‘–‘ majd ‘belföldi telefonszám’
else ‘nemzetközi telefonszám’
India PhoneNumber
a személytől.PersonPhone mint ph
belső csatlakozás személy.Személy, mint p a ph. BusinessEntityID = p.BusinessEntityID
sorrend p.LastName;
|
a kimeneten láthatjuk, hogy a szám belföldi vagy nemzetközi besorolású. A phonenumber oszlopot a Like operátorral értékelik a szögletes zárójel segítségével. Az első karakterpozícióban a nullától a kilencig terjedő számot a nullától a kilencig terjedő minta alapján értékelik, a második karakterpozícióban a nullától a kilencig terjedő számot, a harmadik pedig a negyedik karakterpozíciónak kötőjelnek kell lennie, és hasonló logikát kell alkalmazni a többi karakterre.
SQL használata, mint dinamikus SQL esetén
a következő SQL utasítás visszaadja az összes alkalmazottat, ahol a vezetéknév megegyezik a minta Barb-val. A minta dinamikusan jön létre, és összehasonlítja a kifejezéssel.
1
2
3
4
5
6
7
|
@elastname Varchar(20)= ‘Barb’;
válassza ki a P.keresztnevet,
p.vezetéknév,
div> az.Város
a személytől.Személy p
csatlakozzon a személyhez.Cím a p. BusinessEntityID = ‘s. AddressID
ahol p. vezetéknév mint’ %’ + @ELastName+’%’;
|
a kimeneti lista a megfelelő sorok a megadott minta Barb
megjegyzés: alapértelmezés szerint a char a mező hosszától függően injektálja a záró üres helyeket. Használja RTRIM, hogy elnyomja a záró üres, ha használja a char adattípus.
a következő SQL utasításban a @eLastName mező char adattípusú. Láthatjuk a használata RTRIM funkció, hogy vágja le a záró üres.
1
2
3
4
5
6
7
|
a @elastname char(20)= ‘Barb’;
válassza ki a P.keresztnevet,
p.vezetéknév,
div> az.Város
a személytől.Személy p
csatlakozzon a személyhez.Cím a p. BusinessEntityID = ‘s. AddressID
ahol p. vezetéknév mint’ % ‘ +RTRIM (@ELastName)+’%’;
|
SQL használata mint egy IF utasításnál
a következő SQL utasításnál a bemeneti értéket a feltétel záradékban szereplő adott minta alapján értékelik az IF utasítás használatával.
1
2
3
4
5
|
deklarálja @rulename nvarchar(max)= ‘az SQL Sever 2019 CTP megtekinthető’;
ha @RuleName mint ‘SQL Sever % CTP elérhető előnézet’
PRINT ‘ érvényes bemenet jó!’;
ELSE
PRINT ‘ nem érvényes áru!’;
|
a bemeneti karakterláncot az SQL-szerű helyettesítő karakterlánc használatával értékelik ki, és érvényes bemeneti karakterláncot ad vissza.
Ez minden most!
Összegzés
eddig különböző tippeket és négy különböző helyettesítő karaktert (%,_,, and^]) tárgyaltunk, amelyek elérhetők az SQL LIKE operátorral. Ez egy nagyszerű Keresési technika a karakterláncok illesztéséhez a megadott mintákkal, vagy ahol nem vagyunk biztosak abban, hogy mit keres, más néven fuzzy search. A rendelkezésre álló helyettesítő karakterek rugalmasabbá teszik a hasonló operátort. Remélem tetszett ez a cikk az SQL like operátorról az SQL Server-ben. Nyugodtan tegyen fel bármilyen kérdést az alábbi megjegyzésekben.
- szerző
- Legutóbbi hozzászólások
szakterületem a & magas rendelkezésre állású megoldások és platformok közötti DB migráció tervezése. A jelenleg működő technológiák az SQL Server, a PowerShell, az Oracle és a MongoDB.
Prashanth Jayaram összes hozzászólásának megtekintése
- az adatbázis – ellenőrzés gyors áttekintése az SQL-ben – január 28, 2021
- hogyan állítsuk be az Azure – adatok szinkronizálása az Azure SQL adatbázisok és a helyszíni SQL Server között-január 20, 2021
- az Azure SQL Database importálási/exportálási műveleteinek végrehajtása a PowerShell használatával-január 14, 2021