CHARINDEX

CHARINDEX

CHARINDEX函式常常用來在一段字元中搜尋字元或者字元串

如果 expression1expression2 之一屬於 Unicode 數據類型(nvarcharnchar)而另一個不屬於,則將另一個轉換為 Unicode數據類型。

如果 expression1expression2 之一為NULL 值,則當資料庫兼容級別為 70 或更大時,CHARINDEX 返回 NULL 值。當資料庫兼容級別為 65 或更小時,CHARINDEX 僅在 expression1expression2 都為 NULL 時返回 NULL 值。

基本介紹

  • 外文名:CHARINDEX
  • 定義:返回字元串中指定表達式的起始位
  • 語法:CHARINDEX()
  • 參數:expression1
  • 參數:expression2
  • 參數:[start_location]
  • 返回值:int
定義,相關知識,語法,參數,返回類型,注釋,例子,例一:,例二:,例三:,局限性,

定義

charIndex(被搜尋的字元串,接受搜尋的字元串[,起始])
返回字元串中指定表達式的起始位置。

相關知識

語法

CHARINDEX ( expression1 , expression2 , [ start_location ] )

參數

expression1
一個表達式,其中包含要尋找的字元的次序。expression1 是一個短字元數據類型分類的表達式。
expression2
一個表達式,通常是一個用於搜尋指定序列的列。expression2 屬於字元串數據類型分類。
start_location
expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。

返回類型

注釋

如果 expression1expression2 之一屬於 Unicode 數據類型(nvarcharnchar)而另一個不屬於,則將另一個轉換為 Unicode數據類型。
如果 expression1expression2 之一為NULL 值,則當資料庫兼容級別為 70 或更大時,CHARINDEX 返回 NULL 值。當資料庫兼容級別為 65 或更小時,CHARINDEX 僅在 expression1expression2 都為 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

相關詞條

熱門詞條

聯絡我們