CHARINDEX (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。
備註
如果 expression1 或 expression2 是 Unicode 資料類型 (nvarchar 或 nchar),但另一項不是,則另一項也會轉換成 Unicode 資料類型。CHARINDEX 不能搭配 text、ntext 和 image 資料類型使用。
如果 expression1 或 expression2 是 NULL,當資料庫相容性層級是 70 或以上時,CHARINDEX 會傳回 NULL。如果資料庫相容性層級是 65 或以下,只有在 expression1 和 expression2 都是 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)