zoukankan      html  css  js  c++  java
  • 返回已用编号、缺号分布字符串的处理示例.sql

    --生成已用编号分布字符串的函数
    CREATE FUNCTION f_GetStrSeries(@col1 varchar(10))
    RETURNS varchar(8000)
    AS
    BEGIN
        DECLARE @re varchar(8000),@pid int
        SELECT @re='',@pid=-1
        SELECT @re=CASE
                WHEN col2=@pid+1 THEN @re
                ELSE @re
                    +CASE
                        WHEN RIGHT(@re,CHARINDEX(',',REVERSE(@re)+',')-1)=@pid THEN ''
                        ELSE CAST(-@pid as varchar)
                    END
                    +','+CAST(col2 as varchar)
                END,
            @pid=col2
        FROM tb
        WHERE col1=@col1
        ORDER BY col2
        RETURN(STUFF(@re,1,2,'')
            +CASE
                WHEN RIGHT(@re,CHARINDEX(',',REVERSE(@re)+',')-1)=@pid THEN ''
                ELSE CAST(-@pid as varchar)
            END)
    END
    GO

    --生成缺号分布字符串的函数
    CREATE FUNCTION f_GetStrNSeries(@col1 varchar(10))
    RETURNS VARCHAR(8000)
    AS
    BEGIN
        DECLARE @re varchar(8000),@pid int
        SELECT @re='',@pid=0
        SELECT @re=CASE
                WHEN col2=@pid+1 THEN @re
                ELSE @re+','+CAST(@pid+1 as varchar)
                    +CASE
                        WHEN @pid+1=col2-1 THEN ''
                        ELSE CAST(1-col2 as varchar)
                    END
                END,
            @pid=col2
        FROM tb
        WHERE col1=@col1
        ORDER BY col2
        RETURN(STUFF(@re,1,1,''))
    END
    GO

    --调用测试
    --测试数据
    CREATE TABLE tb(col1 varchar(10),col2 int)
    INSERT tb SELECT 'a',2
    UNION ALL SELECT 'a',3
    UNION ALL SELECT 'a',5
    UNION ALL SELECT 'a',8
    UNION ALL SELECT 'a',9
    UNION ALL SELECT 'b',1
    UNION ALL SELECT 'b',5
    UNION ALL SELECT 'b',6
    UNION ALL SELECT 'b',7

    --查询
    SELECT col1,
        col2_Series=dbo.f_GetStrSeries(col1),
        col2_Series=dbo.f_GetStrNSeries(col1)
    FROM tb
    GROUP BY col1
    /*--结果
    col1       col2_Series       col2_Series
    -------------- ------------------------ --------------
    a          2-3,5,8-9        1,4,6-7
    b          1,5-7           2-4
    --*/
  • 相关阅读:
    sonarqube代码质量检测工具安装(docker安装篇)
    jenkins-job构建完成后通知企业微信
    jenkins-构建job成功后自动打tag到git仓库
    初识Python-变量
    初识Python-文件类型(入坑篇)
    kubernetes-部署LNMP环境运行Discuz
    harbor部署常见的错误
    kubernetes-部署harbor
    Google Hacking语法
    信息搜集总结
  • 原文地址:https://www.cnblogs.com/shihao/p/2508626.html
Copyright © 2011-2022 走看看