数据库如何将一列的值,拼接为逗号分隔的字符串

 时间:2024-10-26 05:31:56

在做报表的时候,可能需要将查询结果某一列的多行记录,使用逗号分隔,拼接成一个字符串。这个时候,该如何实现呢?比如,在bom表中,将查询结果的物料编码列,拼接成一个字符串,而且,字符串中物料编码不重复

工具/原料

sqlserver

方法/步骤

1、创建一个临时表,用于演示sqlserver数据库中,如何将一个字段的数据拼接成一个字符串。例如:将物料清单表中的物料编码,使用逗号分隔,拼接成一个字符串IFOBJECT_ID('tempdb..#tblBom')ISNOTNULLDROPTABLE#tblBom;CREATETABLE#tblBom(OrderNovarchar(50),--订单号ItemCodevarchar(50),--物料编码ItemNamevarchar(50)--物料名称);

数据库如何将一列的值,拼接为逗号分隔的字符串

2、往临时表中插入几行测试数据,模拟物亓歃肿肖料清单insertinto#tblBom(OrderNo,ItemCode,ItemName)values('PO2019001媪青怍牙','MC001','物料1');insertinto#tblBom(OrderNo,ItemCode,ItemName)values('PO2019001','MC002','物料2');insertinto#tblBom(OrderNo,ItemCode,ItemName)values('PO2019001','MC003','物料3');insertinto#tblBom(OrderNo,ItemCode,ItemName)values('PO2019002','MC001','物料1');insertinto#tblBom(OrderNo,ItemCode,ItemName)values('PO2019003','MC005','物料5');

数据库如何将一列的值,拼接为逗号分隔的字符串

3、查询临时表1中的测试数据select*from#tblBom;

数据库如何将一列的值,拼接为逗号分隔的字符串

4、假设表中的数据很少,而且,需求也是要将所有的物料编码,使用逗号拼接起来,那么,就可以使用forxmlpath语法select','+ItemCodefrom#tblBomforxmlpath('')

数据库如何将一列的值,拼接为逗号分隔的字符串

5、从上面的结果可以看出,相同的物料编码,在字符串中重复出现了,那么,如何才能拼接不重复的物料编码呢?其实,直接加上去重关键字distinct就可以了selectdistinct','+ItemCodefrom#tblBomforxmlpath('')

数据库如何将一列的值,拼接为逗号分隔的字符串

6、上面的物料编码虽然去重了,但是,拼接的字符串最前面是以逗号开始的,如何才能去掉这个逗号呢?这个时候,就需要使用stuff函数了select(stuff((selectdistinct','+ItemCodefrom#tblBomforxmlpath('')),1,1,''))

数据库如何将一列的值,拼接为逗号分隔的字符串

7、上面都是查询整个表的结侈砉齿垃果,实际使用时,经常需要按照一定的条件过滤,这个时候就需要使用关联语句了selectItenCode=(selectstuf熠硒勘唏f((selectdistinct','+ItemCodefrom#tblBomwhereOrderNo=tbl.OrderNoforxmlpath('')),1,1,''))from#tblBomtblwheretbl.OrderNo='PO2019001'groupbytbl.OrderNo

数据库如何将一列的值,拼接为逗号分隔的字符串

使用VB做一个条码生成器 VBA用字典的方法制作一个列表框 VB 6.0 怎么多行注释和取消多行注释 如何使用VBA中GetOpenFilename的文件多选参数 vf6.0数值型转换为字符型的函数
热门搜索
柯南图片大全最帅 木材图片 白马寺图片 番红花图片 日韩动漫