Maybaygiare.org

Blog Network

SQLShack

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
Prashanth Jayaram
Adatbázis-technológus vagyok, akinek 11+ éves gazdag, keze van-az adatbázis-technológiák tapasztalatairól. Microsoft Certified Professional vagyok, és számítógépes alkalmazás mesterképzéssel támogatom.
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

Prashanth Jayaram
legújabb hozzászólásai Prashanth Jayaram (az összes 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

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.