一個(gè)SQL存儲(chǔ)過程切割字符串的代碼實(shí)例
在SQL Server數(shù)據(jù)庫中,可以使用存儲(chǔ)過程來切割字符串,即把行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù)。本文就介紹了一個(gè)使用存儲(chǔ)過程切割字符串的實(shí)例。
代碼實(shí)例如下:
- --------------------------這個(gè)函數(shù)用來切割字符串的-----------------
- --函數(shù)的參數(shù)***個(gè)參數(shù)(@Text)是要切割的字符串第二個(gè)參數(shù)(@Sign)是要以什么字符串切割
- CREATEFUNCTION[dbo].[Split](@TextNVARCHAR(4000),@SignNVARCHAR(4000))
- RETURNS@tempTableTABLE(idINTIDENTITY(1,1)PRIMARYKEY,[VALUE]NVARCHAR(4000))
- AS
- BEGIN
- DECLARE@StartIndexINT--開始查找的位置
- DECLARE@FindIndexINT--找到的位置
- DECLARE@ContentVARCHAR(4000)--找到的值
- --初始化一些變量
- SET@StartIndex=1--T-SQL中字符串的查找位置是從1開始的
- SET@FindIndex=0
- --開始循環(huán)查找字符串逗號(hào)
- WHILE(@StartIndex<=LEN(@Text))
- BEGIN
- --查找字符串函數(shù)CHARINDEX***個(gè)參數(shù)是要找的字符串
- --第二個(gè)參數(shù)是在哪里查找這個(gè)字符串
- --第三個(gè)參數(shù)是開始查找的位置
- --返回值是找到字符串的位置
- SELECT@FindIndex=CHARINDEX(@Sign,@Text,@StartIndex)
- --判斷有沒找到?jīng)]找到返回0
- IF(@FindIndex=0OR@FindIndexISNULL)
- BEGIN
- --如果沒有找到者表示找完了
- SET@FindIndex=LEN(@Text)+1
- END
- --截取字符串函數(shù)SUBSTRING***個(gè)參數(shù)是要截取的字符串
- --第二個(gè)參數(shù)是開始的位置
- --第三個(gè)參數(shù)是截取的長(zhǎng)度
- --@FindIndex-@StartIndex表示找的的位置-開始找的位置=要截取的長(zhǎng)度
- --LTRIM和RTRIM是去除字符串左邊和右邊的空格函數(shù)
- SET@Content=LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
- --初始化下次查找的位置
- SET@StartIndex=@FindIndex+1
- --把找的的值插入到要返回的Table類型中
- INSERTINTO@tempTable([VALUE])VALUES(@Content)
- END
- RETURN
- END
以上就是用SQL Server數(shù)據(jù)庫的存儲(chǔ)過程切割字符串的代碼實(shí)例,希望能對(duì)您有所幫助。如果您想了解更多的SQL Server數(shù)據(jù)庫的知識(shí),也可以看一下這里的文章:http://database.51cto.com/sqlserver/,內(nèi)容很精彩哦,一定會(huì)對(duì)您有所收獲的!
【編輯推薦】