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

* SQLServer字符串批量拆分函数

/******************************************************
 * 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,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,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

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

相关推荐