SQL进行字符的拼接与拆分
来源:互联网 发布:软件开发部年终总结 编辑:程序博客网 时间:2024/05/17 08:33
1.在处理数据查询时,有时需要将多行数据合并到一行里,或者将一行里的数据拆分处理,下面来看看例子:
如你有一组数据:
ID name
1212 大西装
1212 小西装
我们需要将结果显示为:
ID name
1212 大西装,小西装
创建测试数据:
select * from #2
DROP TABLE #2
create table #2
(id int,
name nvarchar(max))
insert into #2
select 1212,N'小西装' union all
select 1212,N'大西装'
实现方法:
select id,
(STUFF((select ','+name from #2 a where a.id=b.id for xml path ('')),1,1,''))as name
from #2 b
group by id
备注:
1、计算列可以不用包含在聚合函数中而直接显示,如下面语句的val。
2、for xml path('') 应该应用于语句的最后面,继而生成xml。
3、for xml path('root')中的path参数是生成的xml最顶级节点。
4、字段名或是别名将成为xml的子节点,对于没有列名(字段+'')或是没有别名的字段将直接显示。如[value] +','则是用,分隔的数据(aa,bb,)。
5、对于合并多行数据显示为一行数据时使用自连。
STUFF:是删除指定长度的字符,并在指定的起点处插入另一组字符
语法:
STUFF ( character_expression , start , length ,character_expression )
如:SELECT STUFF('abcdef', 2, 3, 'ijklmn')
下面是结果集 :aijklmnef
以上实现了并接的效果,但如果你本身的数值就是并接的,如何拆分呢?
创建测试数据:
create table #2(id int,name Nvarchar(100))
insert into #2 values(1212,N'小西装,大西装')
实现代码:
SELECT A.id, B.name
FROM(
SELECT id, [name] = CONVERT(xml,' <root> <v>' + REPLACE([name], ',', ' </v> <v>') + ' </v> </root>') FROM #2
)A
OUTER APPLY(
SELECT name = N.v.value('.', 'varchar(100)') FROM A.[name].nodes('/root/v') N(v)
)B
结果集:
ID name
1212 大西装
1212 小西装
- SQL进行字符的拼接与拆分
- 拆分字符进行sql查询
- sql常用的拆分和拼接函数
- sql特殊字符的拼接
- VC位拆分与拼接
- java与jsp页面的字符串拼接和拆分
- SQL 字符拆分
- C# SQL代码字符拼接
- 用SQL进行多值列拆分成二值列的一个实现
- sql一对多拼接多的一端字符
- SQL字符合并函数、字符拆分函数
- 简单的字符拼接
- 使用 SQL的 for xml path来进行字符串拼接
- sql拼接列或sql拼接字符(数字)
- SQL2005下利用XML进行项目的合并与拆分
- SQL2005下利用XML进行项目的合并与拆分
- 请尽量用BufferString进行字符拼接
- 使用iconfont时进行拼接字符图标
- 京东2016笔试编程题
- PointGrey相机同步采集中使用boost::barrier
- make[1]: *** No rule to make target `modules'. Stop.
- redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
- socket 知识点
- SQL进行字符的拼接与拆分
- Qt Creator5.8调用大漠插件
- C++继承详解三 ----菱形继承、虚继承
- sh/bash/csh/Tcsh/ksh/pdksh等shell的区别
- 计算机视觉方面的数据集收藏(CV Datasets on the web)
- Pybrain学习笔记-1 pybrain介绍
- 初学者尴尬之-----SSH整合Struts2跳转不正确
- CAPTCHA
- JDBC课堂总结