在工作中难免会遇到数据库中数据要进行拼接的问题,字符串拼接可以是用SQL的拼接也可以使用C#的拼接,本次说的是使用SQL进行拼接。

  首先插入测试语句:

--测试语句,准备创建表的语句:如下
CREATE TABLE dbo.test3
(
id int IDENTITY(1,1) NOT NULL PRIMARY KEY NONCLUSTERED,
typeid nvarchar(50) NULL,
typeName nvarchar(50) NULL
);
CREATE UNIQUE CLUSTERED INDEX idx3_id
ON dbo.test3(id);
--插入测试数据
INSERT INTO dbo.test3(typeid,typeName) VALUES('S1', '一班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S1', '二班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S1', '三班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S2', '一班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S2', '二班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S3', '三班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S3', '四班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S3', '五班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S3', '六班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S4', '一班');
INSERT INTO dbo.test3(typeid,typeName) VALUES('S4', '二班');

  查询结果如下:

  比如,现在的需求是,我想知道每个阶段(S1为第一阶段)有哪些班级,上图肯定有点乱,如果能每一阶段显示一条数据就好了。

  

select b.typeid,left(b.list,LEN(b.list)-1) from (select typeid,(select typeName+' ,' from test3
where a.typeid=typeid--比对条件,如果缺少则每条都相同
FOR XML PATH('')) as list
from test3 a
group by typeid
)b

  执行结果如下:

  至此,就看出,使用sql for xml path很简单就能拼接出想要的结果来,何乐而不为呢。

SQL字符串拼接FOR XML PATH的更多相关文章

  1. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  2. sql中的for xml path() 实现字符串拼接

       通常我们需要在sql中拼接字符串   ,可以用for xml path() 来进行拼接,如下实例. 同时未去掉最后一个逗号可以用LEFT函数来实现.     ) AS UserName  FRO ...

  3. sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符

    由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...

  4. sql server 使用for xml path 将1列多行转换为字符串连接起来

    create table tb ([id] )) insert into tb ,'aa' union all ,'bb' union all ,'cc' union all ,'dd' union ...

  5. sql server的for xml path与变通的行转列

    SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...

  6. Sql Server 之 for xml (path,raw,auto,root)

    1.for xml path('str') select ID,CreateTime  from dbo.ArticleInfo for xml Path('mytitle') 结果:(注意:如果是s ...

  7. sql查询语句for xml path语法

    [原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' F ...

  8. SQL字符串拼接

    不同的数据库,相应的字符串拼接方式不同,通过对比加深一下记忆. 一.MySQL字符串拼接 1.CONCAT函数 语法格式:CONCAT(char c1, char c2, ..., char cn) ...

  9. C#读取csv文件使用字符串拼接成XML

    phone.csv zhangsan1, zhangsan2, zhangsan3, static void Main(string[] args) { //XML //XML就是一个文件,用来存储数 ...

随机推荐

  1. (六)MySQL数据、库、表的管理

    目录 数据的管理 库的管理 表的管理 数据的管理 一.数据插入语句 1.语法: INSERT INTO 表名(列名,...) VALUES(值1,...); 2.案例:在beauty表中添加一条信息( ...

  2. Censoring【KMP算法+堆栈模拟】

    Censoring 传送门:链接   来源:UPC8203 题目描述 Farmer John has purchased a subscription to Good Hooveskeeping ma ...

  3. 第m大的身份证号码(局部排序代全局、结构体排序)

    第m大的身份证号码(点击) 时间限制: 1 Sec  内存限制: 128 MB                                                             ...

  4. Flume-1.4.0和Hbase-0.96.0整合

    在使用Flume的时候,请确保你电脑里面已经搭建好Hadoop.Hbase.Zookeeper以及Flume.本文将以最新版的Hadoop-2.2.0.Hbase-0.96.0.Zookeeper-3 ...

  5. 其他函数-web_concurrent

    web_concurrent_start函数是并发组开始的标记.组中所有的函数是并发执行的,并发组的结束符为web_concurrent_end 函数. 在并发组中,可以包含的函数有: web_url ...

  6. Android开发Fragment的使用学习

    基本概念 Fragment是Android3.0(API11)提出的概念,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6.所以在开发中要注意不要导错包 导 ...

  7. 【JMeter_09】JMeter逻辑控制器__临界部分控制器<Critical Section Controller>

    临界部分控制器<Critical Section Controller> 业务逻辑: 根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景 锁名类型: ...

  8. cron计划任务

    格式 crontab -e [-u 用户名] ##编辑:注意,每项工作都是一行. crontab -l [-u 用户名] ##查看 crontab -r [-u 用户名] #清除 分 时 日 月 周 ...

  9. HTTP参数污染学习

    HTTP参数污染 --- HPP 参考: 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 视频内容 HPP,简而言之,就是给参数赋上多个值. 比如: https://www.baidu.com/s?w ...

  10. Python的多继承问题-MRO和C3算法

    大部分内容转载自C3 线性化算法与 MRO 理解Python中的多继承 Python 中的方法解析顺序(Method Resolution Order, MRO)定义了多继承存在时 Python 解释 ...