在做报表的时辰,可能需要将查询成果某一列的多行记实,利用逗号分隔,拼接当作一个字符串 。 这个时辰,该若何实现呢?好比,在bom表中,将查询成果的物料编码列,拼接当作一个字符串,并且,字符串中物料编码不反复
需要这些哦
sqlserver
方式/
1建立一个姑且表,用于演示sqlserver数据库中,若何将一个字段的数据拼接当作一个字符串 。 例如:将物料清单表中的物料编码,利用逗号分隔,拼接当作一个字符串
IF OBJECT_ID('tempdb..#tblBom') IS NOT NULL DROP TABLE #tblBom;
CREATE TABLE #tblBom(
OrderNo varchar(50), -- 订单号
ItemCode varchar(50), -- 物料编码
ItemName varchar(50) -- 物料名称
);
文章插图
2往姑且表中插入几行测试数据,模拟物料清单
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC001', '物料1');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC002', '物料2');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019001', 'MC003', '物料3');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019002', 'MC001', '物料1');
insert into #tblBom(OrderNo, ItemCode, ItemName) values('PO2019003', 'MC005', '物料5');
文章插图
3查询姑且表1中的测试数据
select * from #tblBom;
文章插图
4假设表中的数据很少,并且,需求也是要将所有的物料编码,利用逗号拼接起来,那么,就可以利用for xml path语法
select ',' + ItemCode from #tblBom for xml path('')
文章插图
5【数据库如何将一列的值,拼接为逗号分隔的字符串】从上面的成果可以看出,不异的物料编码,在字符串中反复呈现了,那么,若何才能拼接不反复的物料编码呢?其实,直接加上去重关头字distinct就可以了
select distinct ',' + ItemCode from #tblBom for xml path('')
文章插图
6上面的物料编码固然去重了,可是,拼接的字符串最前面是以逗号起头的,若何才能去失落这个逗号呢?这个时辰,就需要利用stuff函数了
select (stuff((select distinct ',' + ItemCode from #tblBom for xml path('')),1,1,''))
文章插图
7上面都是查询整个表的成果,现实利用时,经常需要按照必然的前提过滤,这个时辰就需要利用联系关系语句了
select ItenCode = (select stuff((select distinct ',' + ItemCode from #tblBom where OrderNo = tbl.OrderNo for xml path('')), 1, 1, ''))
from #tblBom tbl
where tbl.OrderNo = 'PO2019001'
group by tbl.OrderNo
文章插图
以上内容就是数据库如何将一列的值,拼接为逗号分隔的字符串的内容啦,希望对你有所帮助哦!
推荐阅读
- 华南农业大学是什么级别的学校,全国排名如何?
- 苹果手机微信如何添加公众号
- 特大喜讯!在今年高考中这5所211大学将进行扩招,考生要把握机会
- 中国化工专业最好的大学是哪几所?就业率如何?
- 如何训练赛鸽在野外过夜
- 如何正确选择兔兔饲料
- 普洱茶芽芽介绍,如何开茶叶店
- 如何正确的认知自我
- 喝什么茶配什么茶点?,如何炒茶叶
- 如何选择玻璃贴膜手把手教你怎么贴?