加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer字符串批量拆分得方法

发布时间:2020-12-12 15:35:19 所属栏目:MsSql教程 来源:网络整理
导读:其实拆分和批量拆分的方法是一样的,所谓批量就是用out apply来调用单个拆分函数。 ? ? /* SQLServer字符串拆分函数,by jinjazz --原始数据 id????????? names ----------- -------------------- 1?????????? jinjazz,blog,csdn 2?????????? sql,ms --生成的

其实拆分和批量拆分的方法是一样的,所谓批量就是用out apply来调用单个拆分函数。

?

?

/*
SQLServer字符串拆分函数,by jinjazz

--原始数据
id????????? names
----------- --------------------
1?????????? jinjazz,blog,csdn
2?????????? sql,ms

--生成的数据
id????????? rn????????? name
----------- ----------- ----------
1?????????? 1?????????? jinjazz
1?????????? 2?????????? blog
1?????????? 3?????????? csdn
2?????????? 1?????????? sql
2?????????? 2?????????? ms


*/

set nocount on
use tempdb
go
if ( object_id ( 'f_test' ) is not null )
??? drop function f_test
go
create function f_test (@ a varchar ( max ))
returns @ t table ( rn int , v varchar ( max ))
as
begin
??? insert into @ t
??? select b . * from (
??? select convert ( xml , '<v>' + replace (@ a , ',' , '</v><v>' ) + '</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 ( '//v' ) AS t ( c )
??? )b???
??? return
end
go


declare @ t table ( id int , names varchar ( 20 ))
insert into @ t select 1 , 'jinjazz,csdn'
insert into @ t select 2 , 'sql,ms'

select * from @ t
select a . id , rn , b . v as name from @ t a outer apply dbo . f_test ( a . names ) b

set nocount off

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读