CHARINDEX (Transact-SQL)

傳回指定運算式在字元字串中的起始位置。

主題連結圖示Transact-SQL 語法慣例

語法

CHARINDEX ( expression1 ,expression2 [ , start_location ] ) 

引數

  • expression1
    這是包含找到的字元序列之運算式expression1 是一個字元字串資料類型類別目錄的運算式。
  • expression2
    這是一個運算式,通常是針對指定序列來進行搜尋的資料行。expression2 屬於字元字串資料類型類別目錄。
  • start_location
    這是在 expression2 中開始搜尋 expression1 的字元位置。如果 start_location 是零或負數,或尚未指定,就會從 expression2 的開頭開始搜尋。start_location 的類型可以是 bigint

傳回類型

如果 expression2 的資料類型是 varchar(max)nvarchar(max)varbinary(max),便傳回 bigint;否則,傳回 int

備註

如果 expression1expression2 是 Unicode 資料類型 (nvarcharnchar),但另一項不是,則另一項也會轉換成 Unicode 資料類型。CHARINDEX 不能搭配 textntextimage 資料類型使用。

如果 expression1expression2 是 NULL,當資料庫相容性層級是 70 或以上時,CHARINDEX 會傳回 NULL。如果資料庫相容性層級是 65 或以下,只有在 expression1expression2 都是 NULL 時,CHARINDEX 才會傳回 NULL。

如果在 expression2 內找不到 expression1,CHARINDEX 會傳回 0。

CHARINDEX 會以輸入的定序為基礎來執行比較。若要執行指定定序的比較,您可以利用 COLLATE,將明確定序套用至輸入上。

傳回的開始位置是以 1 為基準,而不是以 0 為基準。

範例

下列程式碼範例會傳回 bicycle 字元序列在 Document 資料表 DocumentSummary 資料行中的起始位置。

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary)
FROM Production.Document
WHERE DocumentID = 3;
GO

以下為結果集:

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

下列範例會利用選擇性的 start_location 參數,在 DocumentSummary 資料行第 5 字元開始搜尋 bicycle

USE AdventureWorks;
GO
SELECT CHARINDEX('bicycle', DocumentSummary, 5)
FROM Production.Document
WHERE DocumentID = 3;
GO

以下為結果集:

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

(1 row(s) affected)

下列範例會顯示在 expression2 內找不到 expression1 時的結果集。

USE AdventureWorks;
GO
SELECT CHARINDEX('bike', DocumentSummary)
FROM Production.Document
WHERE DocumentID =6;
GO

以下為結果集:

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

(1 row(s) affected)

下列範例使用 COLLATE 函數。

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

請參閱

參考

+ (字串串連) (Transact-SQL)
字串函數 (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助