mssql split

if
 
exists
 (
select
 
*
 
from
 dbo.sysobjects 
where
 id 
=
 
object_id
(N
'
[dbo].[f_splitSTR]
'
) 
and
 xtype 
in
 (N
'
FN
'
, N
'
IF
'
, N
'
TF
'
))
drop function [ dbo ] . [ f_splitSTR ]
GO

-- 3.2.1 循环截取法
CREATE FUNCTION f_splitSTR(
@s varchar ( 8000 ), -- 待分拆的字符串
@split varchar ( 10 ) -- 数据分隔符
) RETURNS @re TABLE (col varchar ( 100 ))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen = LEN ( @split + ' a ' ) - 2
WHILE CHARINDEX ( @split , @s ) > 0
BEGIN
INSERT @re VALUES ( LEFT ( @s , CHARINDEX ( @split , @s ) - 1 ))
SET @s = STUFF ( @s , 1 , CHARINDEX ( @split , @s ) + @splitlen , '' )
END
INSERT @re VALUES ( @s )
RETURN
END
declare @str as varchar ( 8000 )
set @str = ' 1-101,2-201,3-306,4-405,5-501,6-602 '
declare @key as datetime
set @key = ' 2009/08/12 '
declare @t table
(
Day varchar ( 10 )
,A
varchar ( 10 )
,B
int
)
insert into @t (A)
select * from dbo.f_splitSTR( @str , ' , ' )
update @t
set Day = convert ( varchar ( 10 ), @key , 111 ),
A
=LEFT (a, 1 )
,B
=RIGHT (a, 3 )
select * from @t
/*

Day A B
---------- ---------- -----------
2009/08/12 1 101
2009/08/12 2 201
2009/08/12 3 306
2009/08/12 4 405
2009/08/12 5 501
2009/08/12 6 602


(6 行受影响)


*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值