CHARINDEX (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Fungsi ini mencari satu ekspresi karakter di dalam ekspresi karakter kedua, mengembalikan posisi awal ekspresi pertama jika ditemukan.

Konvensi sintaks transact-SQL

Sintaksis

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )   

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

expressionToFind
Ekspresi karakter yang berisi urutan untuk ditemukan. expressionToFind memiliki batas 8000 karakter.

expressionToSearch
Ekspresi karakter untuk dicari.

start_location
Ekspresi bilangan bulat atau besar di mana pencarian dimulai. Jika start_location tidak ditentukan, memiliki nilai negatif, atau memiliki nilai nol (0), pencarian dimulai di awal expressionToSearch.

Jenis yang dikembalikan

bigint jika expressionToSearch memiliki jenis data nvarchar(max), varbinary(max), atau varchar(max ) ; int sebaliknya.

Keterangan

Jika ekspresiToFind atau ekspresiToSearch memiliki jenis data Unicode (nchar atau nvarchar), dan ekspresi lainnya tidak, fungsi CHARINDEX mengonversi ekspresi lain tersebut ke jenis data Unicode. CHARINDEX tidak dapat digunakan dengan jenis data gambar, ntext, atau teks .

Jika ekspresi ExpressionToFind atau ekspresiToSearch memiliki nilai NULL, CHARINDEX mengembalikan NULL.

Jika CHARINDEX tidak menemukan expressionToFind dalam expressionToSearch, CHARINDEX mengembalikan 0.

CHARINDEX melakukan perbandingan berdasarkan kolate input. Untuk melakukan perbandingan dalam kolamen tertentu, gunakan COLLATE untuk menerapkan kolatasi eksplisit ke input.

Posisi awal yang dikembalikan berbasis 1, bukan berbasis 0.

0x0000 (char(0)) adalah karakter yang tidak ditentukan dalam kolase Windows dan tidak dapat disertakan dalam CHARINDEX.

Karakter Tambahan (Pasangan Pengganti)

Saat menggunakan kolase SC, baik start_location maupun pasangan pengganti jumlah nilai yang dikembalikan sebagai satu karakter, bukan dua. Untuk informasi selengkapnya, lihat Dukungan Kolate dan Unicode.

Contoh

J. Mengembalikan posisi awal ekspresi

Contoh ini mencari bicycle dalam variabel nilai string yang dicari @document.

DECLARE @document VARCHAR(64);  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bicycle', @document);  
GO  

Berikut adalah hasil yang ditetapkan.

-----------   
48            

B. Mencari dari posisi tertentu

Contoh ini menggunakan parameter start_location opsional untuk memulai pencarian vital pada karakter kelima dari variabel nilai string yang dicari @document.

DECLARE @document VARCHAR(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('vital', @document, 5);  
GO  

Berikut adalah hasil yang ditetapkan.

-----------   
16            
  
(1 row(s) affected)  

C. Mencari ekspresi yang tidak ada

Contoh ini menunjukkan tataan hasil saat CHARINDEX tidak menemukan expressionToFind dalam expressionToSearch.

DECLARE @document VARCHAR(64);  
  
SELECT @document = 'Reflectors are vital safety' +  
                   ' components of your bicycle.';  
SELECT CHARINDEX('bike', @document);  
GO  

Berikut adalah hasil yang ditetapkan.

-----------
0
  
(1 row(s) affected)

Contoh ini menunjukkan pencarian peka huruf besar/kecil untuk string 'TEST' dalam string 'This is a Test``'yang dicari .

USE tempdb;  
GO  
--perform a case sensitive search  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

Berikut adalah hasil yang ditetapkan.

-----------
0

Contoh ini menunjukkan pencarian peka huruf besar/kecil untuk string 'Test' di 'This is a Test'.

  
USE tempdb;  
GO  
SELECT CHARINDEX ( 'Test',  
       'This is a Test'  
       COLLATE Latin1_General_CS_AS);  

Berikut adalah hasil yang ditetapkan.

-----------
11

Contoh ini menunjukkan pencarian yang tidak peka huruf besar/kecil untuk string 'TEST' di 'This is a Test'.

USE tempdb;  
GO  
SELECT CHARINDEX ( 'TEST',  
       'This is a Test'  
       COLLATE Latin1_General_CI_AS);  
GO  

Berikut adalah hasil yang ditetapkan.

-----------
11

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

F. Mencari dari awal ekspresi string

Contoh ini mengembalikan lokasi pertama string is dalam string This is a string, dimulai dari posisi 1 (karakter pertama) dari This is a string.

SELECT CHARINDEX('is', 'This is a string');  

Berikut adalah hasil yang ditetapkan.

---------
3

G. Mencari dari posisi selain posisi pertama

Contoh ini mengembalikan lokasi pertama string is dalam string This is a string, memulai pencarian dari posisi 4 (karakter keempat).

SELECT CHARINDEX('is', 'This is a string', 4);  

Berikut adalah hasil yang ditetapkan.

---------
 6

H. Hasil ketika string tidak ditemukan

Contoh ini menunjukkan nilai pengembalian ketika CHARINDEX tidak menemukan string string_pattern dalam string yang dicari.

SELECT TOP(1) CHARINDEX('at', 'This is a string') FROM dbo.DimCustomer;  

Berikut adalah hasil yang ditetapkan.

---------
0

Baca juga

LEN (T-SQL)
PATINDEX (Transact-SQL)
Fungsi String (Transact-SQL)
+ (Penggalian String) (Transact-SQL)
Dukungan Kolajeasi dan Unicode