加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver字符串拆分

发布时间:2020-12-12 13:32:16 所属栏目:MsSql教程 来源:网络整理
导读:1、SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组 2、自己来实现 CREATE FUNCTION udf_Split ( @Words nvarchar( MAX )/*原始字串*/ ,@splitStr varchar (50) /*分割字元*/ ) RE
CREATE FUNCTION udf_Split
( @Words nvarchar( MAX )/*原始字串*/
,@splitStr varchar (50) /*分割字元*/
)
RETURNS @Result_Table TABLE
? ? ? ?(
? ? ? ? ?[word] nvarchar( max ) NULL /*定义一个word列*/
? ? ? ?)
BEGIN
? ? Declare @TempStr nvarchar( MAX )
? ? /*@Words有包含分割字元就一直执行回圈*/
? ? WHILE (CHARINDEX(@splitStr,@Words)>0)
? ? BEGIN
? ? /*取出最前面的word*/
? ? ? ? Set @TempStr= SUBSTRING (@Words,1,CHARINDEX(@splitStr,@Words)-1)
? ? ? ? Insert into @Result_Table (word) Values ??(@TempStr)
? ? ? ? /*把最前面的word加上分割字元后,取代为空字串再指派回给@Words*/
? ? ? ? Set @Words = REPLACE (@Words,@TempStr+@splitStr,'' )
? ? END /* End While*/
? ? /*@Words有值但没有分割字元,表示此为最后一个word*/
? ? IF(LEN(RTRIM(LTRIM(@Words)))>0 And CHARINDEX(@splitStr,RTRIM(LTRIM(@Words)))=0)?
? ? Begin
? ? ? ? Set @TempStr=@Words /*取出word*/
? ? ? ? ?
? ? ? ? Insert into @Result_Table (word) Values ??(@TempStr)
? ? ? ? ?
? ? End /* End IF*/
?
? ?RETURN /*回传table 变数*/
END

3、调用

Select?*?from?dbo.udf_Split(N?'Hello,World,Shadow,你好'?,?','?)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

1、SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组

2、自己来实现

    推荐文章
      热点阅读