Bagikan melalui


CHARINDEX (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL 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

Sintaks

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

Argumen

expressionToFind

Ekspresi karakter yang berisi urutan untuk ditemukan. expressionToFind memiliki batas 8.000 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, CHARINDEX fungsi 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 NULL nilai, 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 terdefinisi dalam kolase Windows dan tidak dapat disertakan dalam CHARINDEX.

Karakter Tambahan (Pasangan Pengganti)

Saat menggunakan kolase karakter tambahan (SC), baik start_location maupun pasangan pengganti jumlah nilai pengembalian sebagai satu karakter, bukan dua. Untuk informasi selengkapnya, lihat Dukungan Collation dan Unicode.

Contoh

J. Mengembalikan posisi awal ekspresi

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

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bicycle', @document);
GO

Berikut set hasilnya.

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

B. Mencari dari posisi tertentu

Contoh ini menggunakan parameter start_location opsional

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('vital', @document, 5);
GO

Berikut set hasilnya.

-----------
16

C. Mencari ekspresi yang tidak ada

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

DECLARE @document AS VARCHAR (64);

SELECT @document = 'Reflectors are vital safety' +
    ' components of your bicycle.';

SELECT CHARINDEX('bike', @document);
GO

Berikut set hasilnya.

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

Contoh ini menunjukkan pencarian peka huruf besar/kecil untuk string TEST dalam string This is a Testyang dicari .

USE tempdb;
GO

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

Berikut set hasilnya.

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

Contoh ini menunjukkan pencarian peka huruf besar/kecil untuk string Test dalam string This is a Testyang dicari .

USE tempdb;
GO

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

Berikut set hasilnya.

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

Contoh ini menunjukkan pencarian yang tidak peka huruf besar/kecil untuk string TEST dalam string This is a Testyang dicari .

USE tempdb;
GO

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

Berikut set hasilnya.

-----------
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 set hasilnya.

---------
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 set hasilnya.

---------
 6

H. Hasil saat 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 set hasilnya.

---------
0