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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistem Platform Analitik (PDW)
Titik akhir analitik SQL di Microsoft Fabric
Gudang di Microsoft Fabric
Database SQL di Microsoft Fabric
Mengembalikan posisi awal kemunculan pertama pola dalam ekspresi tertentu, atau nol jika pola tidak ditemukan, pada semua tipe data teks dan karakter yang valid.
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
Ekspresi karakter yang berisi urutan yang akan ditemukan. Karakter wildcard dapat digunakan; namun, karakter % harus datang sebelum dan mengikuti pola (kecuali saat Anda mencari karakter pertama atau terakhir). Pola adalah ekspresi dari kategori tipe data string karakter. pola dibatasi hingga 8.000 karakter.
Note
Meskipun ekspresi reguler tradisional tidak didukung secara asli di SQL Server 2022 (16.x) dan versi sebelumnya, pencocokan pola kompleks serupa dapat dicapai dengan menggunakan berbagai ekspresi kartubebas. Lihat dokumentasi operator string untuk detail selengkapnya tentang sintaks karakter pengganti. Untuk informasi tentang fungsi ekspresi reguler di SQL Server 2025 (17.x), lihat Fungsi ekspresi reguler.
expression
Ekspresi, biasanya kolom yang dicari untuk pola yang ditentukan. adalah dari kategori tipe data string karakter.
Tipe pengembalian
bigint jika ekspresi adalah dari tipe data varchar(max) atau nvarchar(max); jika tidak, int.
Remarks
Jika pola adalah NULL, PATINDEX mengembalikan NULL.
Jika ekspresi adalah NULL, PATINDEX mengembalikan kesalahan.
Posisi awal untuk PATINDEX adalah 1.
PATINDEX melakukan perbandingan berdasarkan kolate input. Untuk melakukan perbandingan dalam kolamen tertentu, Anda dapat menggunakan COLLATE untuk menerapkan kolatasi eksplisit ke input.
Karakter tambahan (Pasangan pengganti)
Saat Anda menggunakan kolase dengan karakter tambahan (SC), nilai yang dikembalikan menghitung pasangan pengganti UTF-16 dalam parameter ekspresi sebagai satu karakter. Untuk informasi selengkapnya, lihat Dukungan Pengurutan dan Unicode.
0x0000 (char(0)) adalah karakter yang tidak terdefinisi dalam kolase Windows dan tidak dapat disertakan dalam PATINDEX.
Examples
A. Contoh PATINDEX dasar
Contoh berikut memeriksa string karakter pendek (interesting data) untuk lokasi awal karakter ter.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Berikut set hasilnya.
position
--------
3
B. Menggunakan pola dengan PATINDEX
Contoh berikut menemukan posisi di mana pola ensure dimulai di baris DocumentSummary kolom tertentu dalam Document tabel dalam database AdventureWorks2025.
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Berikut set hasilnya.
position
--------
64
Jika Anda tidak membatasi baris yang akan dicari dengan menggunakan WHERE klausa, kueri mengembalikan semua baris dalam tabel dan melaporkan nilai bukan nol untuk baris tempat pola ditemukan, dan nol untuk semua baris di mana pola tidak ditemukan.
C. Menggunakan karakter kartubebas dengan PATINDEX
Contoh berikut menggunakan % dan _ kartubebas untuk menemukan posisi di mana pola 'en', diikuti oleh satu karakter dan 'ure' dimulai dalam string yang ditentukan (indeks dimulai pada 1):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Berikut set hasilnya.
position
--------
8
PATINDEX berfungsi seperti LIKE, sehingga Anda dapat menggunakan salah satu kartubebas. Anda tidak perlu mengapit pola antara persen.
PATINDEX('a%', 'abc') mengembalikan 1 dan PATINDEX('%a', 'cba') mengembalikan 3.
Tidak seperti LIKE, PATINDEX mengembalikan posisi, mirip dengan apa yang CHARINDEX dilakukan.
D. Menggunakan ekspresi kartubebas kompleks dengan PATINDEX
Contoh berikut menggunakan [^]operator string untuk menemukan posisi karakter yang bukan angka, huruf, atau spasi.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Berikut set hasilnya.
position
--------
33
E. Gunakan COLLATE dengan PATINDEX
Contoh berikut menggunakan COLLATE fungsi untuk secara eksplisit menentukan kolase ekspresi yang dicari.
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Berikut set hasilnya.
position
--------
9
F. Menggunakan variabel untuk menentukan pola
Contoh berikut menggunakan variabel untuk meneruskan nilai ke parameter pola . Contoh ini menggunakan database AdventureWorks2025.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Berikut set hasilnya.
position
--------
22
Konten terkait
- SUKA (Transact-SQL)
- CHARINDEX (T-SQL)
- LEN (T-SQL)
- Jenis data (Transact-SQL)
- Fungsi String (Transact-SQL)
- [ ] (Kartubebas - karakter yang cocok) (Transact-SQL)
- [^] (Wildcard - karakter yang tidak cocok) (Transact-SQL)
- _ (Wildcard - cocok dengan satu karakter) (Transact-SQL)
- Karakter persen (kartubebas - karakter yang cocok) (Transact-SQL)