CHARINDEX (Transact-SQL)

Bir ifadede başka bir ifadeyi arar ve bulursa başlama konumunu döndürür.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] ) 

Bağımsız değişkenler

  • expressionToFind
    Bulunacak diziyi içeren bir karakter ifadesidir. expressionToFind 8000 karakterle sınırlıdır.

  • expressionToSearch
    Aranacak bir karakter ifadesidir.

  • start_location
    Aramanın başladığı bir integer veya bigint ifadesidir. start_location belirtilmezse, eksi bir sayıysa veya 0 ise, arama expressionToSearch ifadesinin başından başlar.

Dönüş Türleri

expressionToSearch varchar(max), nvarchar(max) veya varbinary(max) veri türlerindeyse bigint; aksi halde int.

Açıklamalar

expressionToFind veya expressionToSearch parametrelerinden biri bir Unicode veri türündeyken (nvarchar veya nchar) diğeri bu türde değilse, diğer parametre Unicode veri türüne dönüştürülür. CHARINDEX text, ntext ve image veri türleriyle kullanılamaz.

expressionToFind veyaexpressionToSearch NULL ise, CHARINDEX NULL döndürür.

expressionToFind expressionToSearch içinde bulunmazsa, CHARINDEX 0 döndürür.

CHARINDEX, karşılaştırmalarını harmanlanmasını temel alarak yapar. Belirli bir harmanlamada bir karşılaştırma yapmak için, girdiye açıkça bir harmanlama uygulamak üzere COLLATE komutunu kullanabilirsiniz.

Döndürülen başlangıç konumu 0 tabanlı değil 1 tabanlıdır.

0x0000 (char(0)), Windows harmanlamalarında tanımsız bir karakterdir ve CHARINDEX'e dahil edilemez.

İkincil Karakterler (Yedek Çiftler)

SC harmanlamaları kullanılırken hem start_location hem dönüş değeri yedek çiftleri iki değil tek karakter olarak sayar. Daha fazla bilgi için, bkz. Harmanlama ve Unicode desteği.

Örnekler

A.Bir ifadenin başlangıç konumunu döndürme

Aşağıdaki örnek bicycle karakter dizisinin Document tablosunun DocumentSummary sütununda başladığı konumu döndürmektedir.

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

Sonuç kümesi buradadır.

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

B.Belirli bir konumdan arama

Aşağıdaki örnek, vital ifadesini DocumentSummary sütununun beşinci karakterinden itibaren aramaya başlamak için isteğe bağlı start_location parametresini kullanmaktadır.

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

Sonuç kümesi buradadır.

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

(1 row(s) affected)

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

(1 row(s) affected)

C.Olmayan bir ifadeyi arama

Aşağıdaki örnek expressionToFind ifadesi expressionToSearch içinde bulunmadığında çıkan sonuç kümesini göstermektedir.

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

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

Sonuç kümesi buradadır.

-----------

0

(1 row(s) affected)

D.Büyük/küçük harfe duyarlı arama gerçekleştirme

Aşağıdaki örnek 'TEST' dizesini 'Das ist ein Test' ifadesinde büyük/küçük harfe duyarlı olarak aramaktadır.

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

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

Sonuç kümesi buradadır.

-----------

0

Aşağıdaki örnek 'Test' dizesini 'Das ist ein Test' ifadesinde büyük/küçük harfe duyarlı olarak aramaktadır.

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS);

USE tempdb;
GO
SELECT CHARINDEX ( 'Test',
       'Das ist ein Test'
       COLLATE Latin1_General_CS_AS);

Sonuç kümesi buradadır.

-----------

13

E.Büyük/küçük harfe duyarsız arama gerçekleştirme

Aşağıdaki örnek 'TEST' dizesini 'Das ist ein Test' ifadesinde büyük/küçük harfe duyarsız olarak aramaktadır.

USE tempdb;
GO
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

USE tempdb;
GO
SELECT CHARINDEX ( 'TEST',
       'Das ist ein Test'
       COLLATE Latin1_General_CI_AS)
GO

Sonuç kümesi buradadır.

-----------

13

Ayrıca bkz.

Başvuru

Dize işlevler (Transact-sql)

(Bitiştirme dize) + (Transact-sql)

Kavramlar

Harmanlama ve Unicode desteği