* SQLServer字符串批量拆分函数

本文介绍了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,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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值