Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Egy minta első előfordulásának kezdő pozícióját adja vissza egy adott kifejezésben, vagy nullát, ha a minta nem található, az összes érvényes szöveg- és karakteradattípuson.
Transact-SQL szintaxis konvenciók
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
A megtalálandó sorozatot tartalmazó karakterkifejezés. Wildcard karakterek is használhatók; azonban a % karakternek előre kell jönnie és követnie kell a mintát (kivéve, ha az első vagy utolsó karaktereket keresed). a minta a karakterlánc adattípus kategória kifejezése. a mintázat 8 000 karakterre korlátozott.
Note
Bár az SQL Server 2022 (16.x) és a korábbi verziók nem támogatják natív módon a hagyományos reguláris kifejezéseket, hasonló összetett mintaegyeztetés érhető el különböző helyettesítő karakterek használatával. A vakkkártyák szintaxisáról további részletekért lásd a String operátorok dokumentációját. Az SQL Server 2025 (17.x) reguláris kifejezési függvényeiről információért lásd: Regular expressions functions.
expression
Egy kifejezés, általában egy oszlop, amelyet a megadott mintára keresnek. az expression a karakterlánc adattípus kategóriájába tartozik.
Visszatérési típusok
bigint, ha az kifejezésa varchar(max) vagy nvarchar(max) adattípusokhoz tartozik; egyébként int.
Remarks
Ha a NULL , PATINDEX akkor akkor -t ad.NULL
Ha a kifejezés az NULL, PATINDEX hibát ad vissza.
A kezdő pozíció PATINDEX a következő 1: .
PATINDEX a bemenet rendezése alapján végez összehasonlításokat. Ha egy adott rendezésben szeretne összehasonlítást végezni, explicit rendezést alkalmazhat COLLATE a bemenetre.
Kiegészítő karakterek (helyettesítő párok)
Amikor kiegészítő karakterekkel (SC) rendelkező összeállításokat használunk, a visszaküldési érték az expresszion paraméterben szereplő UTF-16 helyettesítő párt egyetlen karakterként számolja. További információ: összehasonlítási szabályok és Unicode-támogatás.
0x0000 A (char(0)) a Windows-rendezésekben nem definiált karakter, és nem szerepelhet a fájlban PATINDEX.
Examples
A. Egyszerű PATINDEX-példa
Az alábbi példa egy rövid karaktersorozatot (interesting data) ellenőriz a karakterek terkezdőhelyén.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Itt van az eredmények összessége.
position
--------
3
B. Minta használata a PATINDEX használatával
Az alábbi példa megtalálja a ensure minta elinduló pozícióját az AdventureWorks2025 adatbázis táblázatának oszlopának egy adott sorában DocumentSummaryDocument .
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Itt van az eredmények összessége.
position
--------
64
Ha nem korlátozza a keresendő sorokat záradékkal WHERE , a lekérdezés a tábla összes sorát visszaadja, és nemero értékeket jelent azokra a sorokra vonatkozóan, amelyekben a minta található, és nullát az összes olyan sorra, amelyben a minta nem található.
C. Helyettesítő karakterek használata a PATINDEX használatával
Az alábbi példa % és _ helyettesítő karaktereket használ annak a pozíciónak a megkereséséhez, ahol a minta 'en', amelyet egy karakter követ, és 'ure' a megadott sztringben indul el (az index 1-nél kezdődik):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Itt van az eredmények összessége.
position
--------
8
PATINDEX ugyanúgy működik, hogy LIKEbármelyik helyettesítő karaktert használni tudja. Nem kell a százalékok közötti mintát belefoglalnia.
PATINDEX('a%', 'abc') 1 értéket ad vissza, és PATINDEX('%a', 'cba') 3-at ad vissza.
Ellentétben LIKE, PATINDEX ad vissza egy pozíciót, hasonló, mint amit CHARINDEX csinál.
D. Összetett helyettesítő karakterek használata a PATINDEX használatával
A következő példa a [^]string operátort használja arra, hogy megtalálja annak a karakternek a pozícióját, amely nem szám, betű vagy szóköz.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Itt van az eredmények összessége.
position
--------
33
E. A COLLATE és a PATINDEX használata
Az alábbi példa a COLLATE függvény használatával adja meg a keresett kifejezés rendezési módját.
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Itt van az eredmények összessége.
position
--------
9
F. Változó használata a minta megadásához
A következő példa egy változót használ, hogy egy értéket továbbítson a mintaparaméternek . Ez a példa az AdventureWorks2025 adatbázist használja.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Itt van az eredmények összessége.
position
--------
22
Kapcsolódó tartalom
- MINT (Transact-SQL)
- CHARINDEX (Transact-SQL)
- LEN (Transact-SQL)
- Adattípusok (Transact-SQL)
- sztringfüggvények (Transact-SQL)
- [ ] (Helyettesítő karakter – egyező karakterek) (Transact-SQL)
- [^] (Helyettesítő karakter – nem egyező karakterek) (Transact-SQL)
- _ (Helyettesítő karakter – egy karakter egyezése) (Transact-SQL)
- Százalék karakter (helyettesítő karakter – egyező karakterek) (Transact-SQL)