zoukankan      html  css  js  c++  java
  • SQL字符串分割转列,Sql列转字符串

    declare @strVar varchar(2000)
    declare @ResultVar varchar(2000)
    set @ResultVar='[薄饼],[点心],[海鲜],[酒吧],[楼面],[茗茶],[乳鸽],[烧味],[生蚝],[套餐宴席],[煨汤],[中厨]'
    select * from Sys_Fn_Get_TableFromStringSplit(@strVar,',')

    --Result

    Id  FlowId

    [薄饼]    1
    [点心]    2
    [海鲜]    3
    [酒吧]    4
    [楼面]    5
    [茗茶]    6
    [乳鸽]    7
    [烧味]    8
    [生蚝]    9
    [套餐宴席]    10
    [煨汤]    11
    [中厨]    12

    --DIY
    set @ResultVar=STUFF((select ','+ 'sum(' + p.Id+') as ' +p.id   
                        from Sys_Fn_Get_TableFromStringSplit(@strVar,',') p for XML path('')),1,1,'')

    select @ResultVar

    --Result

    sum([薄饼]) as [薄饼],sum([点心]) as [点心],sum([海鲜]) as [海鲜],sum([酒吧]) as [酒吧],sum([楼面]) as [楼面]

    --字符串分割成表函数

    create function [dbo].[Sys_Fn_Get_TableFromStringSplit]
    (
        @Strings varchar(max),       --要分割成表的字符串 盘点时候要分割的数据可能超过8000
        @Spliter varchar(10)        --分隔符
    )
    returns @Table table(Id varchar(50),FlowId int identity(1,1))
    as
    begin
        declare @index int, @tempValue varchar(50)
        
        while (1 = 1)
        begin
            set @index = charindex(@Spliter, @Strings);
            if (@index > 0)
            begin
                set @tempValue = substring(@Strings, 1, @index);
                set @Strings = substring(@Strings, @index + 1, len(@Strings) -@index);
                set @tempValue = replace(ltrim(rtrim(@tempValue)), @Spliter, '');
                if (len(@tempValue) > 0)
                begin
                    insert into @Table
                    values
                      (
                        @tempValue
                      );
                end
            end
            else
            begin
                set @tempValue = ltrim(rtrim(@Strings));
                if (len(@tempValue) > 0)
                begin
                    insert into @Table
                    values
                      (
                        @tempValue
                      );
                end            
                break;
            end
        end
        return;
        /*********************************Demo*****************************************
        
        select * from   dbo.Sys_Fn_Get_TableFromStringSplit('1,2,3,,4,5,6', ',');
        select * from   dbo.Sys_Fn_Get_TableFromStringSplit('1 2 3,,4 5,6', ' ');
        select * from   dbo.Sys_Fn_Get_TableFromStringSplit('1,2;3,,4,5;6', ';');
        
        *******************************************************************************/
    end

  • 相关阅读:
    js上传文件(图片)限制格式及大小为3M
    position:fixed部分版本的浏览器不支持
    iframe自适应高度的方法
    div左右自适应高度一致
    IE中部分版本的浏览器对Select标签设置innerHTML无效的问题
    在ie10中如何禁用输入框中的小眼睛 与 叉叉 删除按钮
    input输入框默认文字,点击消失
    调用iframe中父页面/子页面中的JavaScript方法
    iframe的一些介绍
    artDialog的一些例子与一些属性的介绍。
  • 原文地址:https://www.cnblogs.com/eimers/p/9025543.html
Copyright © 2011-2022 走看看