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

SQL字符串分割转列,Sql列转字符串的更多相关文章

  1. 学习之路三十六:SQL知识总结 - [游标||字符串分割]

    好久没有写文章了,今天把前不久项目用到的SQL知识总结一下. 一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码: )) RETURNS @result T ...

  2. Python字符串操作之字符串分割与组合

    12.字符串的分割和组合 12.1 str.split():字符串分割函数 通过指定分隔符对字符串进行切片,并返回分割后的字符串列表. 语法: str.split(s, num)[n] 参数说明: s ...

  3. 将中文字符串分割为数组 解决str_split中文乱码php

    首先来介绍str_split()这个函数: 它的作用是将字符串分割为数组: 例如: $str='abcde';str_plite($str); 打印结果如下:Array(    [0] => a ...

  4. C++ 字符串分割,并把子字符串转换成int型整数

    主要涉及到string类的两个函数find和substr: find()函数的用法: 原型:size_t find ( const string& str, size_t pos = 0 ) ...

  5. 【原】sql 将某列拼成一个字符串

    SQL Server中,写存储过程,时常会碰到这样一个需求:从某个表中取某一列,然后需要将这一列数据以某种形式拼成一个字符串,以供后面使用,下面这种方法能够实现此需求. --取说明书模块枚举,结果格式 ...

  6. Sql Server将一列字段拼接成字符串方法

    最近在项目中遇到个问题,需要将表中某列字段合并成字符串输出,如果直接通过代码全部读取出来,再遍历进行拼接显然不是最好的方法,所以想着能否在数据读取的时候直接拼接好返回,网上搜了可通过for xml来实 ...

  7. 在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串)

    原文:在论坛中出现的比较难的sql问题:36(动态行转列 解析json格式字符串) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.

  8. 在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串)

    原文:在论坛中出现的比较难的sql问题:1(字符串分拆+行转列问题 SQL遍历截取字符串) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方 ...

  9. [SQL Server]一列多行转换为字符串

    在 SQL Server 中,如何将多行数据变成一个字符串保存. skill 投石 挖矿 刮痧 上面三行数据想要得到结果为:投石,挖矿,刮痧 有两种方式: 拼接字符串. 使用 for XML 首先创建 ...

随机推荐

  1. mysql迁移之巨大数据量快速迁移方案

    mysql迁移之巨大数据量快速迁移方案-增量备份及恢复 --chenjianwen 一.前言: 当mysql库的大小达到几十个G或者上百G,迁移起来是一件非常费事的事情,业务中断,导出导入耗费大量的时 ...

  2. Python web框架——Tornado

    Tornado是一个Python Web框架和异步网络库,最初由FriendFeed开发.通过使用非阻塞网络I / O,Tornado可以扩展到数万个开放连接,使其成为需要长时间连接每个用户的长轮询, ...

  3. python学习---python基础一

    一.Python介绍 1.python出生与应用 python的创始人是吉多.范罗苏姆(龟叔).1989年圣诞在家闲着无聊,决心开发一个新的脚本解释程序,作为ABC语言的一种继承 python崇尚的是 ...

  4. django2.0设置默认访问路由

    搭建完毕后,打开域名,直接来个报错,如果没有访问的地址,是不合适的 在urls.py中定义,默认访问的路由 from django.contrib import admin from django.u ...

  5. Selenium Webdriver——Xpath轴定位(preceding)

     1.preceding-sibling 选取当前节点之前的所有同级节点 text=出发之前的同级节点: 2.preceding 选取当前节点开始标签之前的所有节点 text=出发节点标签之前的所有i ...

  6. We could not complete your iTunes Store request

    We could not complete your iTunes Store request.An unknown error occurred(502). There was an error i ...

  7. JVM 理解

    https://blog.csdn.net/hjxgood/article/details/53896229 一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写 ...

  8. Configure、中间件与ErrorHandlingMiddleware全局异常捕获

    一.Configure Startup.cs中的Configure方法主要是http处理管道配置.中间件和一些系统配置,其中 IApplicationBuilder: 定义一个类,该类提供配置应用程序 ...

  9. Python_05-文件操作

    目录: 1             文件操作 1.1          快速入门 1.1.1       用Python创建一个新文件 1.1.2       文件内容追加,从0到9的10个随机整数 ...

  10. 18.4Sum (Map)

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...