SQL Server- function-函数/存储过程中 将带分割符的字符串转换返回成DataTable表格形式

SQL Server- function-函数/存储过程中 将带分割符的字符串转换返回成DataTable表格形式

select * from udf_ebs_obc_V_GridStringSplitToTable(',a,b,c',',')

 

上面字符串是   ",a,b,c"   ,分隔符是 “,”   转换后可以得到一个 table 类型,继续放在其他sql 的 存储过程中当做表格使用即可

Create FUNCTION [dbo].[udf_ebs_obc_V_GridStringSplitToTable]

(
@c VARCHAR(MAX) , --- @c 为固定格式,第一位必须有分隔符比如 ;A;B;C
@split VARCHAR(50)
)
RETURNS @t TABLE ( col NVARCHAR(100) )
AS
BEGIN

if CHARINDEX(@split, @c) <> 0 --首次去掉第一个分隔符,防止插入空符号到表格, 供下面使用
begin
SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')
end

WHILE ( CHARINDEX(@split, @c) <> 0 )
BEGIN
INSERT @t( col )
VALUES ( SUBSTRING(@c, 1, CHARINDEX(@split, @c) - 1) )
SET @c = STUFF(@c, 1, CHARINDEX(@split, @c), '')
END
INSERT @t( col ) VALUES ( @c ) --把最后一部分内容插入表

RETURN
END

另一边文章正好相反,字符串转换成dataset/table 模式,请参考:

SQL Server- 结果集dataset同一列多行转换为单行但分隔符的字符串拼接

作者: 轻烟随风
当前文章地址: https://www.zyxpp.com/sql-server-stringsplittotable/
来源: 轻烟随风的博客
文章版权归作者所有,欢迎转载
THE END
分享
二维码
< <上一篇
下一篇>>