SQL语句实现Split并合并查询结果

  需求是这样的,需要将数据库中的支付方式列(用“;”分割的字符串)按支付方式拆分;

  首先参考博客园split的文章,我采用方法2,

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
--方法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;
GO

  具体分割:

SELECT* FROM BPM_EnterpriseOrgActivity e CROSS APPLY f_splitSTR(e.PaymentId,';')

  

转载于:https://www.cnblogs.com/skybreak/p/6214919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值