微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver字符串拆分

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

2、自己来实现

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,你好' ',' )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐