一個SQL存儲過程切割字符串的代碼實例
作者:被淹死的囧囧魚
本文介紹了一個用SQL Server數據庫的存儲過程來切割字符串的代碼實例,希望能對您有所幫助。
在SQL Server數據庫中,可以使用存儲過程來切割字符串,即把行數據轉換為列數據。本文就介紹了一個使用存儲過程切割字符串的實例。
代碼實例如下:
- --------------------------這個函數用來切割字符串的-----------------
- --函數的參數***個參數(@Text)是要切割的字符串第二個參數(@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)查找字符串逗號
- WHILE(@StartIndex<=LEN(@Text))
- BEGIN
- --查找字符串函數CHARINDEX***個參數是要找的字符串
- --第二個參數是在哪里查找這個字符串
- --第三個參數是開始查找的位置
- --返回值是找到字符串的位置
- SELECT@FindIndex=CHARINDEX(@Sign,@Text,@StartIndex)
- --判斷有沒找到沒找到返回0
- IF(@FindIndex=0OR@FindIndexISNULL)
- BEGIN
- --如果沒有找到者表示找完了
- SET@FindIndex=LEN(@Text)+1
- END
- --截取字符串函數SUBSTRING***個參數是要截取的字符串
- --第二個參數是開始的位置
- --第三個參數是截取的長度
- --@FindIndex-@StartIndex表示找的的位置-開始找的位置=要截取的長度
- --LTRIM和RTRIM是去除字符串左邊和右邊的空格函數
- SET@Content=LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
- --初始化下次查找的位置
- SET@StartIndex=@FindIndex+1
- --把找的的值插入到要返回的Table類型中
- INSERTINTO@tempTable([VALUE])VALUES(@Content)
- END
- RETURN
- END
以上就是用SQL Server數據庫的存儲過程切割字符串的代碼實例,希望能對您有所幫助。如果您想了解更多的SQL Server數據庫的知識,也可以看一下這里的文章:http://database.51cto.com/sqlserver/,內容很精彩哦,一定會對您有所收獲的!
【編輯推薦】
責任編輯:趙鵬
來源:
博客園