基本介紹
- 外文名:CHARINDEX
- 定義:返回字元串中指定表達式的起始位
- 語法:CHARINDEX()
- 參數:expression1
- 參數:expression2
- 參數:[start_location]
- 返回值:int
定義,相關知識,語法,參數,返回類型,注釋,例子,例一:,例二:,例三:,局限性,
定義
charIndex(被搜尋的字元串,接受搜尋的字元串[,起始])
返回字元串中指定表達式的起始位置。
相關知識
語法
CHARINDEX ( expression1 , expression2 , [ start_location ] )
參數
expression1
expression2
一個表達式,通常是一個用於搜尋指定序列的列。expression2 屬於字元串數據類型分類。
start_location
在 expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。
返回類型
注釋
如果 expression1 或 expression2 之一為NULL 值,則當資料庫兼容級別為 70 或更大時,CHARINDEX 返回 NULL 值。當資料庫兼容級別為 65 或更小時,CHARINDEX 僅在 expression1 和 expression2 都為 NULL 時返回 NULL 值。
如果在 expression2 內沒有找到 expression1,則 CHARINDEX 返回 0。
類似與C#中的StartWith(),IndexWith()等函式。
例子
例一:
CustomName包含客戶的First Name和Last Name,它們之間被一個空格隔開。我們用CHARINDX函式確定兩個名字中間空格的位置。通過這個方法,我們可以分析ContactName列的空格位置,這樣可以只顯示這個列的last name部分。
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers
CHARINDEX函式找到First Name和Last Name之間的空格,所以SUBSTRING函式可以分開ContactName列,這樣就只有Last Name被選出。在CHARINDEX函式返回的整數上加1,這樣Last Name不是從空格開始。
例二:
計算Northwind.dbo.Customer表中Addresses欄位中包含單詞Road或者它的縮寫Rd的記錄數,選擇語句類似這樣:
select count(*) from Northwind.dbo.Customers where CHARINDEX('Rd',Address) > 0 or CHARINDEX('Road',Address)> 0
例三:
print charindex--------判斷第一個字元串是否在第二個字元串中存在,如果存在:返回第一個字元串的第一個字元在第二個字元串中的下標,不存在返回0)
print charindex('abc','dfsaabc')--存在所以返回值為5(abc中的a在dfsaabc里的下標)