Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini memperkenalkan ekspresi reguler untuk SQL Server.
Ekspresi reguler, atau regex, adalah urutan karakter yang menentukan pola pencarian untuk teks. Regex umumnya digunakan untuk berbagai tugas termasuk pencocokan pola, validasi data, transformasi data, dan kueri. Ini menawarkan cara yang fleksibel dan efisien untuk mencari, memanipulasi, dan menangani operasi data yang kompleks.
Note
Ekspresi reguler tersedia di Azure SQL Managed Instance dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.
Implementasi ekspresi reguler ini didasarkan pada pustaka ekspresi reguler RE2. Untuk informasi selengkapnya, kunjungi Sintaks Ekspresi Reguler RE2.
Fungsi regex yang didukung:
| Function | Description |
|---|---|
| REGEXP_LIKE | Mengembalikan nilai Boolean yang menunjukkan apakah input teks cocok dengan pola regex. |
| REGEXP_REPLACE | Mengembalikan string sumber yang dimodifikasi digantikan oleh string pengganti, di mana kemunculan pola regex ditemukan. |
| REGEXP_SUBSTR | Mengekstrak bagian string berdasarkan pola ekspresi reguler. Mengembalikan kemunculan Nth dari substring yang cocok dengan pola regex. |
| REGEXP_INSTR | Mengembalikan posisi awal atau akhir substring yang cocok, tergantung pada opsi yang disediakan. |
| REGEXP_COUNT | Mengembalikan hitungan berapa kali pola regex terjadi dalam string. |
| REGEXP_MATCHES | Mengembalikan tabel substring yang diambil yang cocok dengan pola ekspresi reguler dengan string. Jika tidak ada kecocokan yang ditemukan, fungsi tidak mengembalikan baris. |
| REGEXP_SPLIT_TO_TABLE | Mengembalikan tabel string yang dipisahkan, dibatasi oleh pola regex. Jika tidak ada kecocokan dengan pola, fungsi mengembalikan string. |
Ekspresi reguler dapat terdiri dari karakter harfiah dan metakarakter, yang memiliki arti dan fungsi khusus.
Ekspresi reguler dasar adalah karakter literal tunggal. Karakter cocok dengan dirinya sendiri, kecuali untuk metakarakter. Metakarakter meliputi *, , +, ?, (), atau |. Untuk mencocokkan metacharacter, lepaskan dengan garis miring terbalik. Misalnya, \* cocok dengan karakter tanda bintang harfiah (*).
Dua ekspresi reguler dapat diubah atau digabungkan untuk membentuk ekspresi reguler baru: jika e1 cocok dengan s dan e2 cocok dengan t, maka e1 | e2 cocok s atau t, dan e1e2 cocok dengan st.
Metacharacters *, +, dan ? adalah operator pengulangan: e1* cocok dengan urutan string nol atau lebih (mungkin berbeda), yang masing-masing cocok dengan e1; e1 + cocok dengan satu atau beberapa; e1? cocok dengan nol atau satu.
Prioritas operator, dari pengikatan terlemah hingga terkuat, adalah sebagai berikut: - Pergantian - Perangkaian - Operator pengulangan
Tanda kurung eksplisit dapat digunakan untuk memaksa arti yang berbeda, seperti dalam ekspresi aritmatika. Beberapa contoh: ab|cd setara dengan (ab)|(cd) ; ab setara dengan a(b).
Untuk informasi selengkapnya tentang sintaks ekspresi reguler yang diterima oleh RE2, lihat
Sintaks Ekspresi Reguler RE2. Halaman ini juga mencantumkan beberapa sintaks yang diterima oleh PCRE, Perl, dan Vim.
Karakter ekspresi reguler yang diterima
Ekspresi karakter tunggal
| Jenis ekspresi karakter tunggal | Examples |
|---|---|
| karakter apa saja, kemungkinan termasuk newline (s=true) | . |
| character class | [xyz] |
| kelas karakter yang dinegasikan | [^xyz] |
| Kelas karakter dalam bahasa Perl | \d |
| kelas karakter Perl yang dinegasikan | \D |
| Kelas karakter ASCII | [[:alpha:]] |
| kelas karakter ASCII yang dinegasikan | [[:^alpha:]] |
| Kelas karakter Unicode (nama satu huruf) | \pN |
| Kelas karakter Unicode | \p{Greek} |
| kelas karakter Unicode yang dinegasikan (nama satu huruf) | \PN |
| kelas karakter Unicode yang dinegasikan | \P{Greek} |
| Komposit | Description |
|---|---|
xy |
x diikuti oleh y |
x | y |
x atau y (lebih suka x) |
| Pengulangan | Description |
|---|---|
x* |
nol atau lebih x, lebih suka lebih banyak |
x+ |
satu atau beberapa x, lebih suka lebih banyak |
x? |
nol atau satu x, lebih suka satu |
x{n,m} |
n atau n+1 atau ... atau m x, lebih suka lebih banyak |
x{n,} |
n atau lebih x, lebih suka lebih banyak |
x{n} |
tepat n x |
x*? |
nol atau lebih x, lebih suka lebih sedikit |
x+? |
satu atau beberapa x, lebih suka lebih sedikit |
x?? |
nol atau satu x, lebih suka nol |
x{n,m}? |
n atau n+1 atau ... atau m x, lebih suka lebih sedikit |
x{n,}? |
n atau lebih banyak x, lebih suka lebih sedikit |
x{n}? |
tepat n x |
Note
Formulir penghitungan x{n,m}, x{n,}, dan x{n} formulir penolakan yang membuat jumlah pengulangan minimum atau maksimum di atas 1.000. Pengulangan tidak terbatas tidak tunduk pada pembatasan ini.
Kelas karakter Perl
Tabel berikut ini mencantumkan kelas karakter Perl yang saat ini didukung.
| Kelas karakter Perl (semua khusus ASCII) | Description |
|---|---|
\d |
digit ( [0-9]) |
\D |
bukan digit ( [^0-9]) |
\s |
spasi kosong ( [\t\n\f\r ]) |
\S |
bukan spasi kosong ( [^\t\n\f\r ]) |
\w |
karakter dalam kata ( [0-9A-Za-z_]) |
\W |
bukan karakter kata ( [^0-9A-Za-z_]) |
Kelas karakter ASCII
Tabel berikut ini mencantumkan kelas karakter ASCII yang saat ini didukung.
| Kelas karakter ASCII | Description |
|---|---|
[[:alnum:]] |
alfanumerik ( [0-9A-Za-z]) |
[[:alpha:]] |
alfabet ( [A-Za-z]) |
[[:ascii:]] |
ASCII ( [\x00-\x7F]) |
[[:blank:]] |
kosong ( [\t ]) |
[[:cntrl:]] |
kendali ([\x00-\x1F\x7F]) |
[[:digit:]] |
digit ( [0-9]) |
[[:graph:]] |
grafis ( [!-~] atau [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]) |
[[:lower:]] |
huruf kecil ( [a-z]) |
[[:print:]] |
dapat dicetak ( [ -~] atau [ [:graph:]]) |
[[:punct:]] |
tanda baca ( [!-/:-@[-\``{-~]) |
[[:space:]] |
spasi kosong ( [\t\n\v\f\r ]) |
[[:upper:]] |
huruf besar ( [A-Z]) |
[[:word:]] |
karakter dalam kata ( [0-9A-Za-z_]) |
[[:xdigit:]] |
digit hex ( [0-9A-Fa-f]) |
Karakter literal
- Letters
- Numbers
- Symbols
String kosong
| String kosong | Description |
|---|---|
^ |
Di awal teks atau baris (m=true) |
$ |
Di akhir teks (seperti \z, bukan \Z) atau baris (m=true) |
\A |
Di awal teks |
\b |
Pada batas kata ASCII (\w di satu sisi dan \W, \A, atau \z di sisi lain) |
\B |
Tidak pada batas kata ASCII |
\z |
Di akhir teks |
Groupings
Grup penangkapan (subekspresi) pola dengan:
| Pengelompokan | Description |
|---|---|
(re) |
Grup penangkap bernomor (submatch) |
(?P<name>re) |
Grup penangkap bernama dan bernomor (submatch) |
(?:re) |
Grup yang tidak menangkap |
(?<flags>) |
Atur <flags> dalam grup saat ini; tidak menangkap |
(?<flags>:re) |
Atur <flags> selama re; tidak menangkap Pengelompokan |
Flags
Gunakan bendera untuk mengubah perilaku ekspresi. Contohnya:
| 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) |
Implementasi ini mendukung standar ekspresi reguler POSIX mengikuti RE2, dan mendukung sintaks ekspresi reguler jenis PCRE/PCRE2 yang kompatibel dengan sebagian besar mesin dan alat ekspresi reguler modern. Ada berbagai jenis ekspresi reguler, seperti POSIX, ANSI, Perl, dan PCRE, yang memiliki sintaks dan fitur berbeda. Untuk informasi selengkapnya tentang konstruksi dan perilaku yang didukung dari mesin regex yang mendasar, lihat RE2, pustaka ekspresi reguler.
Note
Pencocokan ekspresi reguler di SQL Server tidak menghormati kolase SQL untuk perbandingan linguistik. Perilaku ini dirancang dan konsisten dengan sebagian besar mesin ekspresi reguler, karena pencocokan didasarkan pada pola dan properti karakter Unicode daripada aturan kolase. Akibatnya, hal ini dapat menyebabkan perbedaan perilaku jika dibandingkan dengan fungsi perbandingan string lain seperti LIKE, terutama pada kolom terindeks dengan kolase khusus bahasa.
Requirements
- Alat klien SQL, seperti Azure Data Studio, SQL Server Management Studio, atau Visual Studio Code.
- Pengetahuan dasar tentang sintaks dan kueri SQL.
- Pemahaman dasar tentang sintaks dan konsep ekspresi reguler.
FAQ
Apa dampak performa menggunakan regex?
Kueri regex dapat memiliki dampak performa tergantung pada kompleksitas pola regex, ukuran data teks, dan jumlah baris yang terlibat. Anda dapat menggunakan rencana dan statistik eksekusi untuk memantau dan mengoptimalkan performa kueri regex Anda.
Keterbatasan
Item berikut saat ini tidak didukung:
- Jenis data LOB (varchar(max) atau nvarchar(max)) untuk
string_expressionsdidukung dalam fungsi intrinsik berikut:REGEXP_LIKEREGEXP_COUNTREGEXP_INSTR
Namun, dukungan ini terbatas pada ukuran input hingga 2 MB.
Jenis data LOB tidak didukung dalam fungsi regex berikut:
REGEXP_REPLACEREGEXP_SUBSTRREGEXP_MATCHESREGEXP_SPLIT_TO_TABLE
Fungsi ekspresi reguler tidak didukung dalam prosedur tersimpan yang dikompilasi secara asli.
Konten terkait
- fungsi ekspresi reguler (Transact-SQL)