adatbázisban.Útmutató

Az SQL Serverben használhatja a T-SQL PATINDEX() függvényt egy karakterláncon belüli minta megtalálásához. Pontosabban, a függvény csak a minta első előfordulását adja vissza a karakterláncon belül.

a függvény két argumentumot fogad el; a mintát és a karakterláncot.

helyettesítő karaktereket használhat a mintán belül.

szintaxis

a szintaxis így megy:

PATINDEX ( '%pattern%' , expression )

ahol a minta egy karakter kifejezés, amely tartalmazza a keresendő szekvenciát, a kifejezés pedig a keresendő kifejezés.

1.példa – alapvető használat

Íme egy példa arra, hogyan működik:

SELECT PATINDEX('%eer%', 'Bob likes beer.') AS Result;

eredmény:

+----------+| Result ||----------|| 12 |+----------+

a százalékos jel (%) egy helyettesítő karakter, amely a bármilyen karakterlánc nulla vagy több karakter.

2. példa-nincs mérkőzés

itt van, mi történik, ha nem tartalmazza a helyettesítő karaktereket:

SELECT PATINDEX('eer', 'Bob likes beer.') AS Result;

Eredmények:

+----------+| Result ||----------|| 0 |+----------+

Bár, ha a teljes karakterlánc megegyezik a minta nélkül helyettesítő karakterek, kapsz egy meccs:

SELECT PATINDEX('Bob', 'Bob') AS Result;

az Eredmény:

+----------+| Result ||----------|| 1 |+----------+

Azonban nem lesz meccs, ha a karakterlánc több karaktereket:

SELECT PATINDEX('Bob', 'Bob likes beer.') AS Result;

Eredmények:

+----------+| Result ||----------|| 0 |+----------+

ebben Az esetben jól jönne egy egységes helyettesítő:

SELECT PATINDEX('Bob%', 'Bob likes beer.') AS Result;

Eredmény:

+----------+| Result ||----------|| 1 |+----------+

a minta közepén is használhat egyetlen helyettesítő kártyát:

SELECT PATINDEX('B%r.', 'Bob likes beer.') AS Result;

eredmény:

+----------+| Result ||----------|| 1 |+----------+

ebben az esetben egyezést kaptunk, mert a karakterlánc eleje és vége megegyezett a kezdőbetűvel és a minta vége. Természetesen a karakterlánc közepe is megegyezett a minta közepével, mert az összes többi karaktert a százalékos jel fedezi.

3. példa-az aláhúzott helyettesítő

itt van egy másik példa, ahol bemutatunk egy másik helyettesítő karaktert:

SELECT PATINDEX('B_er', 'Beer') AS Result;

eredmény:

+----------+| Result ||----------|| 1 |+----------+

az aláhúzás (_), amely bármely karakter helyettesítő karaktere. Ezért csak akkor egyezik meg, ha pontosan egy karakter van ebben a helyzetben.

természetesen a fenti minta sok különböző karakterlánchoz illeszkedik. Például:

SELECT PATINDEX('B_er', 'Beer') AS 'Beer', PATINDEX('B_er', 'Bier') AS 'Bier', PATINDEX('B_er', 'Baer') AS 'Baer', PATINDEX('B_er', 'B er') AS 'B er';

eredmény:

+--------+--------+--------+--------+| Beer | Bier | Baer | B er ||--------+--------+--------+--------|| 1 | 1 | 1 | 1 |+--------+--------+--------+--------+

4.példa – A _ és % helyettesítő karakterek összehasonlítása

Ez a példa bemutatja a _ és % helyettesítő karakterek közötti különbséget.

SELECT PATINDEX('B%r', 'Beer') AS '%', PATINDEX('B_r', 'Beer') AS '_', PATINDEX('B__r', 'Beer') AS '__';

eredmény:

+-----+-----+------+| % | _ | __ ||-----+-----+------|| 1 | 0 | 1 |+-----+-----+------+

az aláhúzás csak akkor egyezik meg, ha pontosan egy karakter van ebben a helyzetben. Ahhoz, hogy megfeleljen a két karakter, meg kell használni két aláhúzás.

a százalékos jel viszont megfelel tetszőleges számú karakternek, beleértve a nullát is, amint az a következő példában látható:

SELECT PATINDEX('Bee%r', 'Beer') AS '%', PATINDEX('Bee_r', 'Beer') AS '_', PATINDEX('Bee__r', 'Beer') AS '__';

Eredmények:

+-----+-----+------+| % | _ | __ ||-----+-----+------|| 1 | 0 | 0 |+-----+-----+------+

5. Példa Egy Adatbázis Példa

Itt egy példa ennek a funkciónak a használatával az adatbázis lekérdezés:

USE Music;SELECT AlbumName, PATINDEX('%the%', AlbumName) AS 'Pattern Index'FROM AlbumsWHERE PATINDEX('%the%', AlbumName) > 0;

az Eredmény:

+-------------------------+-----------------+| AlbumName | Pattern Index ||-------------------------+-----------------|| Singing Down the Lane | 14 || Ziltoid the Omniscient | 9 || No Prayer for the Dying | 15 || The Sixteen Men of Tain | 1 |+-------------------------+-----------------+

ebben Az esetben használja a WHERE záradék vissza csak azok az albumok, hogy valójában mérkőzés, együtt a PATINDEX() eredmény. Ha elejtettem a WHERE záradékot, az összes album vissza lett volna adva, függetlenül attól, hogy egyeztek-e vagy sem.

azok számára, akik nem egyeztek, a PATINDEX() eredmény nulla lenne.

USE Music;SELECT TOP(10) AlbumName, PATINDEX('%the%', AlbumName) AS 'Pattern Index'FROM Albums;

eredmény:

+-------------------------+-----------------+| AlbumName | Pattern Index ||-------------------------+-----------------|| Powerslave | 0 || Powerage | 0 || Singing Down the Lane | 14 || Ziltoid the Omniscient | 9 || Casualties of Cool | 0 || Epicloud | 0 || Somewhere in Time | 0 || Piece of Mind | 0 || Killers | 0 || No Prayer for the Dying | 15 |+-------------------------+-----------------+

6.példa – csak az első előfordulás

mint említettük, PATINDEX() csak a karakterláncon belüli minta első előfordulását adja vissza.

SELECT PATINDEX('%and%', 'Bob and beer and popcorn.') AS Result;

eredmény:

+----------+| Result ||----------|| 5 |+----------+

A CHARINDEX() függvény

A T-SQL CHARINDEX() függvény hasonló a PATINDEX(). Vannak azonban különbségek a kettő között. Különösen aPATINDEX() elfogadja a helyettesítő karaktereket, de nem kiindulási pozíciót. CHARINDEX() másrészt elfogadja a kiindulási pozíciót, de nem helyettesítő karaktereket.

Related Posts

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

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük