• 把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。


    我们日常开发过程中,非常常见的一种需求,

    在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这种方式转变一下也是可以实现的,但是我这里有以前我一直使用的另外一种方式,也记录一下吧。

    依照惯例,我们首先来看看效果。

    调用:SELECT Id FROM [Fn_StringSplitToTable]('1,12,36,65,58,56,DF',',')

    image

    具体函数如下:

    -- ============================================= 
    -- 调用:SELECT Id FROM [Fn_StringSplitToTable]('1,12,36,65,58,56,DF',',') 
    -- Create date: <Create Date,,> 
    -- Description:    把用逗号分隔的字符串转换成表格数据 
    -- ============================================= 
    CREATE FUNCTION [dbo].[Fn_StringSplitToTable] 

        @StringX varchar(MAX), 
        @Split nvarchar(10) 

    RETURNS 
    @IdsTable TABLE 

        [Id] nvarchar(200) 

    AS 
    BEGIN 
        DECLARE @Index int 
        DECLARE @LenIndex int 
        SET @LenIndex=LEN(@Split) 
        SET @Index=CHARINDEX(@Split,@StringX,1) 
        WHILE (@Index>=1) 
        BEGIN 
            IF(LEFT(@StringX,@Index-1) <> '') 
                INSERT INTO @IdsTable SELECT LTRIM(RTRIM(LEFT(@StringX,@Index-1))) 
            SET @StringX=RIGHT(@StringX,LEN(@StringX)-@Index-@LenIndex+1) 
            SET @Index=CHARINDEX(@Split,@StringX,1) 
        END 
        IF(@StringX<>'') INSERT INTO @IdsTable SELECT LTRIM(RTRIM(@StringX)) 
        
        RETURN 
    END

    以上调用是用逗号隔开,如果您的字符串是用/号隔开,直接修改调用字符串就行了。

    -- 调用:SELECT Id FROM [Fn_StringSplitToTable]('1/12/36/65/58/56/DF','/') 

  • 相关阅读:
    C#编程总结 字符转码
    获取 苹果UDID 序列号
    SVN :This XML file does not appear to have any style information associated with it.
    oracle 实时查询最耗CPU资源的SQL语句
    Oracle 优化和性能调整
    weblogic管理脚本
    weblogic状态监控脚本
    oracle性能检测sql语句
    Oracle动态性能表-V$SESSION_WAIT,V$SESSION_EVENT
    linux HBA 卡驱动安装
  • 原文地址:https://www.cnblogs.com/lykbk/p/sdfsdfsdf45454354.html
Copyright © 2020-2023  润新知