SQL拆分(转)

DECLARE @STRIN VARCHAR(MAX)

SET @STRIN =

    '87349+2015-06-10 10:38_2015-06-23 10:38+20.00

                 $109603+2015-06-16 10:38_2015-06-22 10:38+0.00';

 

WITH CTE AS(

         SELECT RTRIM(T2.V)              V,

                CHARINDEX('+', T2.V)     N1,

                CHARINDEX('_', T2.V)     N2,

                CHARINDEX('+', T2.V, CHARINDEX('+', T2.V) + 1)N3

         FROM   (

                    SELECT CAST('<V>' + REPLACE(@STRIN, '$', '</V><V>') + '</V>' AS XML)

                           VS

                )T1

                CROSS APPLY(

             SELECT N.V.value('.', 'VARCHAR(100)')V

             FROM   T1.VS.nodes('/V')N(V)

         )T2

     )

     ,CTE2 AS(

         SELECT LEFT(V, N1 -1) AS [stuID],

                SUBSTRING(V, N1 + 1, N2 -N1 -1)[date1],

                SUBSTRING(V, N2 + 1, N3 -N2 -1)[date2],

                RIGHT(V, LEN(V) -N3)[FeeStand]

         FROM   CTE

     )

 

SELECT [stuID],

       [date],

       [FeeStand]

FROM   CTE2 UNPIVOT([date] FOR T IN ([date1], [date2]))U

转载于:https://www.cnblogs.com/ppStudio/p/6683091.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值