address='F:\photo\Winter Leaves.jpg' 要求:分段截取每段字符[字段address不能為TEXT類型,否則報錯]
insert into student (address,id) values ('F:\photo\Winter Leaves.jpg',5)
---截取字符串A的第一個\左邊的字符串 select left(address,charindex('\',address)-1) as A from student where id=5 輸出結(jié)果:F:
---截取\中間的字符串 select left(stuff(address,1,charindex('\',address),''),charindex('\',stuff(address,1,charindex('\',address),''))-1) from student where id=5 輸出結(jié)果:photo
---截取最后一個\后面的字符串 select reverse(left(reverse(address),charindex('\',reverse(address))-1)) from student where id=5 輸出結(jié)果:Winter Leaves.jpg
---截取字符串A的首字幕 select STUFF(address,1, 1, '') from student where id=5 輸出結(jié)果::\photo\Winter Leaves.jpg
CHARINDEX函數(shù)返回字符或者字符串在另一個字符串中的起始位置。 語法 CHARINDEX ( expression1 , expression2 [ , start_location ] ) 參數(shù) expression1 一個表達(dá)式,其中包含要尋找的字符的次序。expression1 是一個短字符數(shù)據(jù)類型分類的表達(dá)式。 expression2 一個表達(dá)式,通常是一個用于搜索指定序列的列。expression2 屬于字符串?dāng)?shù)據(jù)類型分類。 start_location 在 expression2 中搜索 expression1 時的起始字符位置。如果沒有給定 start_location,而是一個負(fù)數(shù)或零,則將從 expression2 的起始位置開始搜索。 返回類型 int 注釋 如果 expression1 或 expression2 之一屬于 Unicode 數(shù)據(jù)類型(nvarchar 或 nchar)而另一個不屬于,則將另一個轉(zhuǎn)換為 Unicode 數(shù)據(jù)類型。 如果 expression1 或 expression2 之一為 NULL 值,則當(dāng)數(shù)據(jù)庫兼容級別為 70 或更大時,CHARINDEX 返回 NULL 值。當(dāng)數(shù)據(jù)庫兼容級別為 65 或更小時,CHARINDEX 僅在 expression1 和 expression2 都為 NULL 時返回 NULL 值。 如果在 expression2 內(nèi)沒有找到 expression1,則 CHARINDEX 返回 0。 例一: CustomName包含客戶的First Name和Last Name,它們之間被一個空格隔開。我們用CHARINDX函數(shù)確定兩個名字中間空格的位置。通過這個方法,我們可以分析ContactName列的空格位置,這樣可以只顯示這個列的last name部分。 select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers CHARINDEX函數(shù)找到First Name和Last Name之間的空格,所以SUBSTRING函數(shù)可以分開ContactName列,這樣就只有Last Name被選出。在CHARINDEX函數(shù)返回的整數(shù)上加1,這樣Last Name不是從空格開始。 例二: 計算Northwind.dbo.Customer表中Addresses字段中包含單詞Road或者它的縮寫Rd的記錄數(shù),選擇語句類似這樣: select count(*) from Northwind.dbo.Customers where CHARINDEX('Rd',Address) > 0 or CHARINDEX('Road',Address)> 0 局限性:在Oracle 10g中無法使用。提示CHARINDEX 標(biāo)識符無效 CHARINDEX函數(shù)調(diào)用方法如下: CHARINDEX函數(shù)返回一個整數(shù),返回的整數(shù)是要找的字符串在被找的字符串中的位置。假如CHARINDEX沒有找到要找的字符串,那么函數(shù)整數(shù)“0”。讓我們看看下面的函數(shù)命令執(zhí)行的結(jié)果: CHARINDEX('SQL', 'Microsoft SQL Server')
這個函數(shù)命令將返回在“Microsoft SQL Server”中“SQL”的起始位置,在這個例子中,CHARINDEX函數(shù)將返回“S”在“Microsoft SQL Server”中的位置11。 CHARINDEX('7.0', 'Microsoft SQL Server 2000') 在這個例子中,CHARINDEX返回零,因?yàn)樽址?/span>“7.0” 不能在“Microsoft SQL Server”中被找到。接下來通過兩個例子來看看如何使用CHARINDEX函數(shù)來解決實(shí)際的T-SQL問題。
|
|