1、sql对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-sql不支持数组
2、自己来实现
|
( @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] 举报,一经查实,本站将立刻删除。