/******************************************************
* SQLServer字符串批量拆分函数
--原始数据
id names
----------- --------------------
1 ljy,zwg,cym
2 czg,zy
--生成的数据
id rn name
----------- ----------- ----------
1 1 ljy
1 2 zwg
1 3 cym
2 1 czg
2 2 zy
--示例1:
declare @table table(id int , names varchar(20))
insert into @table select 1, 'ljy,zwg,cym'
insert into @table select 2 , 'czg,zy'
SELECT * FROM @table
SELECT a.id,rn,b.v AS name
FROM @table AS a outer apply dbo.uf_split_string_batch(a.names)b
--示例2:
SELECT a.c_guid,rn,b.v AS name
FROM tb_contract a
outer apply dbo.uf_split_string_batch(a.c_store_id)b
*************************************************************************/
ALTER FUNCTION [dbo].[uf_split_string_batch](@value varchar(MAX))
RETURNS @table TABLE(rn int,v varchar(MAX))
AS
BEGIN
INSERT INTO @table
SELECT b.*
FROM(SELECT CONVERT(XML , '<v>' + REPLACE(@value, ',','<
><v>' )+ '<
>' ) AS f )a
OUTER APPLY
(
SELECT rn = row_number ()OVER (ORDER BY getdate ()),t.c.value ('.' , 'varchar(max)' ) AS f
FROM a.f.nodes ('/
' ) AS t(c )
)b
RETURN
END
* SQLServer字符串批量拆分函数
--原始数据
id names
----------- --------------------
1 ljy,zwg,cym
2 czg,zy
--生成的数据
id rn name
----------- ----------- ----------
1 1 ljy
1 2 zwg
1 3 cym
2 1 czg
2 2 zy
--示例1:
declare @table table(id int , names varchar(20))
insert into @table select 1, 'ljy,zwg,cym'
insert into @table select 2 , 'czg,zy'
SELECT * FROM @table
SELECT a.id,rn,b.v AS name
FROM @table AS a outer apply dbo.uf_split_string_batch(a.names)b
--示例2:
SELECT a.c_guid,rn,b.v AS name
FROM tb_contract a
outer apply dbo.uf_split_string_batch(a.c_store_id)b
*************************************************************************/
ALTER FUNCTION [dbo].[uf_split_string_batch](@value varchar(MAX))
RETURNS @table TABLE(rn int,v varchar(MAX))
AS
BEGIN
INSERT INTO @table
SELECT b.*
FROM(SELECT CONVERT(XML , '<v>' + REPLACE(@value, ',','<
OUTER APPLY
(
SELECT rn = row_number ()OVER (ORDER BY getdate ()),t.c.value ('.' , 'varchar(max)' ) AS f
FROM a.f.nodes ('/
)b
RETURN
END
本文介绍了SQLServer中用于批量拆分字符串的函数,通过示例展示了如何使用该函数将字符串按逗号分隔并转换为单独的行。示例包括将数据插入临时表以及在实际表中应用函数。

2794

被折叠的 条评论
为什么被折叠?



