FOR XML PATH('') 将查询结果显示为XML 经常用来将查询结果按逗号分隔后显示至某一字段 select * from Area结果 添加FOR XML PATH('')后 select * from Area FOR XML PATH('') 这是xml格式 将地名用逗号分开放到一个字段 代码: select ',' + F_FullName from Sys_Area FOR XML PATH('') 结果: 使用STUFF去除最前面的','(STUFF([参],[起始位置],[
有时候一张表的一个字段是以逗号分割的一个字符串,分割的数字是明细表的主键id. 关联明细表查询可以这样做: ) ) --这是把areanos字段赋值给@areanos变量 set @areanos='1,2,3' --将拼接的SQL脚本赋值给变量 set @str='select * from area where areano in ('+@areanos+') order by areano' --调用系统存储过程,执行SQL exec sp_executesql @str
例如:有表MO_Cook,字段:FoodRoom,name 有如下数据: 要求:将FoodRoom中值相同的字段合并成一行,并将name的值用逗号隔开. 需要用到:STUFF函数. 查询语句如下: select FoodRoom, stuff((select ','+name from MO_Cook where c.FoodRoom=FoodRoom ,,'') as CookNames from MO_Cook c group by c.FoodRoom 查询结果如下: STUFF (
首先我们有一个表 查询结果如下: 现在我们想要把USER_NAME这一列的内容 放到一个字段里面去: 一行sql语句解决问题: SELECT STUFF(( SELECT ',' +convert(VARCHAR, USER_NAME) FROM TE_USER FOR XML PATH('')), 1, 1, '') AS UserName 解释一下上面这条语句: 1,首先STUFF函数在上面的语句里的作用是去除拼接的字符串最前面的逗号 STUFF函数的用法大概是STUFF(param1, s
--创建存储过程 IF EXISTS (SELECT * FROM sysobjects WHERE name='GetSplitString' AND xtype='p') DROP PROCEDURE dbo.GetSplitString GO CREATE PROCEDURE dbo.GetSplitString @strID nvarchar(max) --以逗号隔开的字符串 ,) output --临时表 AS BEGIN declare @totalLength int declar
Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 ,,) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句 ,,”; string sqltxt=”select * from tablename where id in (“+aa+”)”; 然后执行 sqltxt 这样的风险是存在sql注入漏洞.那么如何在 in 的条件中使用变量呢?可以把形如“1,2,3”这样的字符串转换为一个临时表,这个表有一列
使用场景:把某一列值转换为逗号分隔的字符串 例子:比如查询所有的的表空间如下,现在要获得所有的表空间用逗号分隔的字符串(比如rman duplicate的时候skip表空间) SQL> select name from v$tablespace; NAME ------------------------------ SYSTEM SYSAUX CTXD APPS_TS_TX_DATA APPS_TS_TX_IDX OWAPUB APPS_TS_QUEUES ODM OLAP APPS_TS_T