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. CCproxy 设置代理服务器。

    CCproxy 设置代理服务器. 通过代理服务器上网,出口IP就固定成代理服务器的IP 设置安装比较简单,直接去ccproxy官网下载就行 如果服务器是公网服务器,记得在设置,高级里面的网络中,把禁止 ...

  2. ArrayList实现

    数组实现父类:AbstractList接口:List,RandomAccess,Cloneable,Serializable字段://默认容量private static final int DEFA ...

  3. unicat,multicast,broadcast区别

    单播.多播和广播单播”(Unicast).“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单 ...

  4. 页面白屏并且报错PHP Parse error: syntax error, unexpected end of file in 试了很久总算解决了

    页面白屏并且报错PHP Parse error:  syntax error, unexpected end of file in 试了很久 啥短标记,打开,都试了 最简单的办法 是重新建立一个文件, ...

  5. css字体中px和em的区别

    2015-05-28 昨天看到一个不错的纯css3表格样式,看到代码后注意到了作者用的都是em在控制大小.顿时想到了自己习惯使用的px长度单位,就查了关于两者的区别.综合前辈们的总结记录整理下来,以供 ...

  6. VLC接收网络串流缓冲时间的计算 (转)

    原帖地址:http://blog.csdn.net/coroutines/article/details/7472743 VLC版本2.0.1 最近研究IP-STB音视频同步问题,发现方案自带的自动S ...

  7. UNITY 手动定制inspector

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...

  8. TI davinci DM6467通过串口0将UBL和u-boot写入NAND flash

    TI的davinci系列一般支持好几种启动模式,如下图TMS320DM6467的datasheet可以查到所有的BOOTMODE LVS301和LW9226的开发板上有一个选择bootmode的拨码开 ...

  9. MVC表单提交写法1

    初学MVC,感觉跟以前的aspx页面差别很大,我们就先来看看MVC的表单是怎么提交的吧. 现在我们用一个最简单的例子来看一看MVC是怎么提交表单的(这一个例子中,我们的关注点是如何提交表单,所以不涉及 ...

  10. FP变更物料编码(增加尾缀)

    FP物料编码增加尾缀的程序,标准物料编码是18位,目前程序中增加尾缀的有三种1.DUMMY 2.SP开头 3.P开头 4.C开头 5.BP对应处理程序如下:1.DUMMY       SAP_MATE ...