Megosztás a következőn keresztül:


REGEXP_INSTR (Transact-SQL)

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database a Microsoft Fabricben

A megfeleltetett részsztring kezdő vagy záró pozícióját adja vissza a return_option argumentum értékétől függően.

REGEXP_INSTR
(
    string_expression,
    pattern_expression [ , start [ , occurrence [ , return_option [ , flags [ , group ] ] ] ] ]
)

Note

A reguláris kifejezések az SQL Server 2025 vagy always-up-todátumfrissítési szabályzattal rendelkező felügyelt Azure SQL-példányban érhetők el.

Arguments

string_expression

Karaktersztring kifejezése.

Lehet állandó, változó vagy karaktersztring oszlopa.

Adattípusok: karakter, nchar, varcharvagy nvarchar.

Note

A REGEXP_LIKE, REGEXP_COUNTés REGEXP_INSTR függvények legfeljebb 2 MB-ig támogatják a LOB-típusokat (varchar(max) és nvarchar(max)) a string_expression paraméterhez.

pattern_expression

Egyező reguláris kifejezésminta. Általában szövegkonstans.

Adattípusok: karakter, nchar, varcharvagy nvarchar. pattern_expression legfeljebb 8000 bájt karakterhosszt támogat.

start

Megadja a keresési sztringen belüli keresés kezdő helyét. Optional. A típus int vagy bigint.

A számozás 1-alapú, ami azt jelenti, hogy a kifejezés első karaktere 1, és az értéknek >= 1kell lennie. Ha a kezdő kifejezés kisebb, mint 1, hibát ad vissza. Ha a kezdő kifejezés nagyobb, mint a string_expression hossza, a függvény ad vissza 0. Az alapértelmezett érték a 1.

occurrence

Kifejezés (pozitív egész szám), amely meghatározza, hogy a mintakifejezés mely előfordulása szerepel a forrássztringben, amelyet keresni vagy cserélni szeretne. Az alapértelmezett érték 1. A string_expression első karakterére keres. Pozitív egész szám nesetén a nthpattern_expression első előfordulását követő első karakterrel kezdődő előfordulást keresi, és így tovább.

return_option

Megadja, hogy a megfeleltetett részszúrás kezdő vagy záró pozícióját adja-e vissza. Használja a 0 az elejére, és 1 a végére. Az alapértelmezett érték a 0. A lekérdezés hibát ad vissza bármely más értékhez.

flag

Egy vagy több karakter, amely megadja az egyezések kereséséhez használt módosítókat. A típus varchar vagy karakter, legfeljebb 30 karakterből áll.

Például ims. Az alapértelmezett érték a c. Ha üres sztring (' ') van megadva, akkor a rendszer az alapértelmezett értékként kezeli ('c'). Adjon meg c vagy bármely más karakterkifejezést. Ha a jelölő több egymásnak ellentmondó karaktert tartalmaz, akkor az SQL Server az utolsó karaktert használja.

Ha például ic a regex megkülönbözteti a kis- és nagybetűket.

Ha az érték Támogatott jelölőértékeklistán felsoroltaktól eltérő karaktert tartalmaz, a lekérdezés az alábbi példához hasonló hibát ad vissza:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Támogatott jelölőértékek
Flag Description
i Kis- és nagybetűk megkülönböztetése (alapértelmezett false)
m Többsoros mód: ^ és $ a kezdő/záró szöveg mellett egyezik a kezdő/záró vonallal (alapértelmezett false)
s Egyezés beállítása .\n (alapértelmezett false)
c Kis- és nagybetűk megkülönböztetése (alapértelmezett true)

group

Meghatározza, hogy egy subexpression mely rögzítési csoportja () határozza meg a visszatérési string_expression belüli pozíciót. A csoport zárójelek közé zárt mintatöredék, amely beágyazható. A csoportok számozása abban a sorrendben van, amelyben a bal zárójelek a mintában jelennek meg. Az érték egész szám, >= 0 és nem lehet nagyobb, mint a pattern_expression csoportok száma. Az alapértelmezett érték az 0, amely azt jelzi, hogy a pozíció a teljes pattern_expression egyező sztringen alapul.

Ha az érték nagyobb, mint a csoportok száma pattern_expression, a függvény ad vissza 0.

Visszaadott érték

Integer.

Examples

Keresse meg az első olyan részszúrás helyét, amely csak számjegyeket tartalmaz a PRODUCT_DESCRIPTION oszlopban.

SELECT REGEXP_INSTR(PRODUCT_DESCRIPTION, '\d+')
FROM PRODUCTS;

Keresse meg a a oszlopban a PRODUCT_NAME (kis- és nagybetűk megkülönböztetése) betű harmadik előfordulásának pozícióját.

SELECT REGEXP_INSTR(PRODUCT_NAME, 'a', 1, 3, 0, 'i')
FROM PRODUCTS;

Keresse meg a t kezdetű és a e oszlopban PRODUCT_DESCRIPTION végződő első részszűrés végének pozícióját.

SELECT REGEXP_INSTR(PRODUCT_DESCRIPTION, 't.*?e', 1, 1, 1)
FROM PRODUCTS;