Bagikan melalui


REGEXP_REPLACE (Transact-SQL)

Berlaku untuk: Database SQL SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed Instancedi Microsoft Fabric

Mengembalikan string sumber yang dimodifikasi digantikan oleh string pengganti, di mana kemunculan pola ekspresi reguler ditemukan. Jika tidak ada kecocokan yang ditemukan, fungsi mengembalikan string asli.

REGEXP_REPLACE
(
    string_expression,
    pattern_expression [ , string_replacement [ , start [ , occurrence [ , flags ] ] ] ]
)

Note

Ekspresi reguler tersedia di Azure SQL Managed Instance dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.

Arguments

string_expression

Ekspresi string karakter.

Bisa berupa konstanta, variabel, atau kolom string karakter.

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

Note

Fungsi REGEXP_LIKE, REGEXP_COUNT, dan REGEXP_INSTR 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.

string_replacement

Ekspresi string yang menentukan string pengganti untuk substring yang cocok dan menggantikan substring yang cocok dengan pola. String_replacement dapat berupa jenis data karakter, varchar, nchar, dan nvarchar. Jika string kosong ('') ditentukan, fungsi akan menghapus semua substring yang cocok dan mengembalikan string yang dihasilkan. String pengganti default adalah string kosong ('').

string_replacement dapat berisi \n, di mana n adalah 1 hingga 9, untuk menunjukkan bahwa substring sumber yang cocok dengan grup kurung n'th (subekspresi) pola harus dimasukkan, dan dapat berisi & untuk menunjukkan bahwa substring yang cocok dengan seluruh pola harus dimasukkan. Tulis \ jika Anda perlu meletakkan garis miring terbelakang harfiah dalam teks pengganti.

Misalnya

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) \2-\3')

Returns:

(123) 456-7890

Jika yang disediakan \nstring_replacement lebih besar dari jumlah grup dalam pattern_expression, maka fungsi mengabaikan nilai .

Contohnya:

REGEXP_REPLACE('123-456-7890', '(\d{3})-(\d{3})-(\d{4})', '(\1) (\4)-xxxx')

Returns:

(123) ()-xxxx

start

Tentukan 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 string_expression. 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.

flags

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)

Mengembalikan nilai

Expression.

Examples

Ganti semua kemunculan a atau e dengan X dalam nama produk.

SELECT REGEXP_REPLACE(PRODUCT_NAME, '[ae]', 'X', 1, 0, 'i')
FROM PRODUCTS;

Ganti kemunculan pertama cat atau dog dengan pet dalam deskripsi produk

SELECT REGEXP_REPLACE(PRODUCT_DESCRIPTION, 'cat|dog', 'pet', 1, 1, 'i')
FROM PRODUCTS;

Ganti empat digit terakhir nomor telepon dengan tanda bintang

SELECT REGEXP_REPLACE(PHONE_NUMBER, '\d{4}$', '****')
FROM CUSTOMERS;