zoukankan      html  css  js  c++  java
  • [原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据

    我们日常开发过程中,非常常见的一种需求,把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。

    在前面我们介绍了 [原创]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','/')

    如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

    PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

  • 相关阅读:
    SpringCloud第五天
    SpringCloud第四天
    SpringCloud第三天
    mysql数据库主从同步I/O问题修复
    linux服务器通过rpm包安装nginx案例
    potplayer最大化不遮挡任务栏
    火狐怎么在新标签打开书签
    Binding failed for port a1e67849-aa1d-418d-a04c-8343b8dbf64f, please check neutron logs for more information
    Unable to mount root fs on unknown-block(0,0)
    安装VCSA6.7
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/4227641.html
Copyright © 2011-2022 走看看