CHARINDEX

CHARINDEX

CHARINDEX函式常常用來在一段字元中搜尋字元或者字元串。 如果 expression1 或 expression2 之一屬於 Unicode 數據類型(nvarchar 或nchar)而另一個不屬於,則將另一個轉換為 Unicode數據類型。 如果 expression1 或 expression2 之一為NULL 值,則當資料庫兼容級別為 70 或更大時,CHARINDEX 返回 NULL 值。當資料庫兼容級別為 65 或更小時,CHARINDEX 僅在 expression1 和 expression2 都為 NULL 時返回 NULL 值。

定義

charIndex(被搜尋的字元串,接受搜尋的字元串[,起始])

返回字元串中指定表達式的起始位置。

相關知識

語法

CHARINDEX ( expression1 , expression2 , [ start_location ] )

參數

expression1

一個表達式,其中包含要尋找的字元的次序。 expression1 是一個短字元數據類型分類的表達式。

expression2

一個表達式,通常是一個用於搜尋指定序列的列。 expression2 屬於字元串數據類型分類。

start_location

在 expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。

返回類型

int

注釋

如果 expression1 或 expression2 之一屬於 Unicode 數據類型(nvarchar 或nchar)而另一個不屬於,則將另一個轉換為 Unicode數據類型。

如果 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里的下標)

局限性

charindex為SQL Server函式,Oracle中使用函式instr

相關詞條

相關搜尋

熱門詞條

聯絡我們