REGEXP_INSTR (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft Fabric dan Gudang dalam database Microsoft FabricSQL di Microsoft Fabric

Fungsi REGEXP_INSTR ekspresi reguler skalar mengembalikan posisi awal atau akhir dari substring yang cocok, tergantung pada nilai return_option argumen.

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

Arguments

string_expression

Ekspresi string karakter.

Bisa berupa konstanta, variabel, atau kolom string karakter.

Jenis data: karakter, nchar, varchar , atau nvarchar.

Note

Fungsinya REGEXP_* mendukung jenis LOB (varchar(max) dan nvarchar(max)) hingga 2 MB untuk parameter string_expression .

pattern_expression

Pola ekspresi reguler untuk dicocokkan. Biasanya teks harfiah.

Jenis data: karakter, nchar, varchar , atau nvarchar. pattern_expression mendukung panjang karakter maksimum 8.000 byte.

start

Menentukan posisi awal untuk pencarian dalam string pencarian. Optional. Jenisnya adalah int atau bigint.

Penomoran berbasis 1, yang berarti karakter pertama dalam ekspresi adalah 1 dan nilainya harus >= 1. Jika ekspresi mulai kurang dari 1, mengembalikan kesalahan. Jika ekspresi awal lebih besar dari panjang string_expression, fungsi akan mengembalikan 0. Defaultnya adalah 1.

occurrence

Ekspresi (bilangan bulat positif) yang menentukan kemunculan ekspresi pola dalam string sumber yang akan dicari atau diganti. Defaultnya adalah 1. Mencari pada karakter pertama string_expression. Untuk bilangan bulat npositif , ia mencari kemunculan yang nth dimulai dengan karakter pertama setelah kemunculan pertama pattern_expression, dan sebagainya.

return_option

Menentukan apakah akan mengembalikan posisi awal atau akhir substring yang cocok. Gunakan 0 untuk awal, dan 1 untuk akhir. Nilai defaultnya adalah 0. Kueri mengembalikan kesalahan untuk nilai lain.

flag

Satu atau beberapa karakter yang menentukan pengubah yang digunakan untuk mencari kecocokan. Jenisnya varchar atau karakter, dengan maksimum 30 karakter.

Misalnya, ims. Defaultnya adalah c. Jika string kosong (' ') disediakan, string tersebut akan diperlakukan sebagai nilai default ('c'). Berikan c atau ekspresi karakter lainnya. Jika bendera berisi beberapa karakter kontradiktif, maka SQL Server menggunakan karakter terakhir.

Misalnya, jika Anda menentukan ic regex mengembalikan pencocokan peka huruf besar/kecil.

Jika nilai berisi karakter selain yang tercantum di Nilai bendera yang didukung, kueri mengembalikan kesalahan seperti contoh berikut:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Nilai bendera yang didukung
Flag Description
i Tidak peka huruf besar/kecil (default false)
m Mode multibaris: ^ dan $ cocokkan baris awal/akhir selain teks awal/akhir (default false)
s Biarkan . cocok \n (default false)
c Peka huruf besar/kecil (default true)

group

Menentukan grup pengambilan (subexpression) pattern_expression mana yang menentukan posisi dalam string_expression untuk dikembalikan. Grup adalah fragmen pola yang diapit dalam tanda kurung dan dapat disarangkan. Grup diberi nomor dalam urutan di mana tanda kurung kirinya muncul dalam pola. Nilainya adalah bilangan bulat dan harus >= 0 dan tidak boleh lebih besar dari jumlah grup dalam pattern_expression. Nilai defaultnya adalah 0, yang menunjukkan bahwa posisi didasarkan pada string yang cocok dengan seluruh pattern_expression.

Jika nilai lebih besar dari jumlah grup dalam pattern_expression, fungsi mengembalikan 0.

Mengembalikan nilai

int

Dukungan platform

  • Pada Azure SQL Managed Instance, fungsi ekspresi reguler T-SQL tersedia hanya dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.
  • Fungsi ekspresi reguler T-SQL tersedia di Azure SQL Database, SQL database di Fabric, dan mulai di SQL Server 2025.
  • Fungsi ekspresi reguler T-SQL tidak tersedia di SQL Server 2022 atau versi sebelumnya.
  • Fungsi skalar ekspresi reguler T-SQL tersedia sebagai fitur pratinjau di Fabric Data Warehouse. Untuk informasi lebih lanjut, lihat Fungsi ekspresi reguler di Fabric Data Warehouse. Fungsi bernilai tabel ekspresi reguler T-SQL tidak tersedia di Fabric Data Warehouse.

Examples

Temukan posisi substring pertama yang hanya berisi digit di kolom PRODUCT_DESCRIPTION.

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

Temukan posisi kemunculan ketiga huruf a (tidak peka huruf besar/kecil) di kolom PRODUCT_NAME.

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

Temukan posisi akhir substring pertama yang dimulai dengan t dan berakhir dengan e (peka huruf besar/kecil) di kolom PRODUCT_DESCRIPTION.

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