CHARINDEX的使用

CHARINDEX
返回字符串中指定表達式的起始位置。 
語法
CHARINDEX ( e­xpression1 , e­xpression2 [ , start_location ] ) 
參數
e­xpression1
一個表達式,其中包含要尋找的字符的次序。e­xpression1 是一個短字符數據類型分類的表達式。
e­xpression2
一個表達式,通常是一個用於搜索指定序列的列。e­xpression2 屬於字符串數據類型分類。
start_location
在 e­xpression2 中搜索 e­xpression1 時的起始字符位置。如果沒有給定 start_location,而是一個負數或零,則將從 e­xpression2 的起始位置開始搜索。
返回類型
int
註釋
如果 e­xpression1 或 e­xpression2 之一屬於 Unicode 數據類型(nvarchar 或 nchar)而另一個不屬於,則將另一個轉換爲 Unicode 數據類型。
如果 e­xpression1 或 e­xpression2 之一爲 NULL 值,則當數據庫兼容級別爲 70 或更大時,CHARINDEX 返回 NULL 值。當數據庫兼容級別爲 65 或更小時,CHARINDEX 僅在 e­xpression1 和 e­xpression2 都爲 NULL 時返回 NULL 值。 
如果在 e­xpression2 內沒有找到 e­xpression1,則 CHARINDEX 返回 0。

-----------------------------------------
例一:

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)> 1
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章