一、CHARINDEX
1:CHARINDEX語法:
CHARINDEX ( expression1 ,expression2 [ , start_location ] )
2:參數
一個表達式,其中包含要查找的字符的序列。expression1 是一個字符串數據類別的表達式。
一個表達式,通常是一個為指定序列搜索的列。expression2 屬於字符串數據類別。
開始在 expression2 中搜索 expression1 時的字符位置。如果 start_location 未被指定、是一個負數或零,則將從 expression2 的開頭開始搜索。start_location 可以是 bigint 類型。
3:返回類型
如果 expression2 的數據類型為 varchar(max)、nvarchar(max) 或 varbinary(max),則為 bigint,否則為 int。
4:備注
如果在 expression2 內找不到 expression1,則 CHARINDEX 返回 0。
CHARINDEX 將根據輸入的排序規則執行比較操作。若要以指定排序規則進行比較,則可以使用 COLLATE 將顯式排序規則應用於輸入值。
返回的開始位置從 1 開始,而非從 0 開始。
4:例子
select charindex('A','BADF',1) :2
select charindex('A','BADF',0) :2
select charindex('A','BADF',2) :2
select charindex('A','BADF',3) :0
select charindex('G','BADF',3) :0
二、SUBSTRING
1、語法
SUBSTRING ( expression ,start , length )
2、參數
expression
是字符串、二進制字符串、文本、圖像、列或包含列的表達式。不要使用包含聚合函數的表達式。
start
指定子字符串開始位置的整數。start 可以為 bigint 類型。
length
一個正整數,指定要返回的 expression 的字符數或字節數。如果 length 為負,則會返回錯誤。length 可以是 bigint 類型。
3、備注
必須以字符數指定使用 ntext、char 或 varchar 數據類型的偏移量(start 和 length)。必須以字節數指定使用 text、image、binary 或 varbinary 等數據類型的偏移量。
4、例子:
select substring('GXS',-1,3) :G
select substring('GXS',-1,2) :NULL
select substring('GXS',0,1) :NULL
select substring('GXS',1,1) :G
select substring('GXS',1,2) :GX