sqlserver中怎么将一列数据拼接成一个字符串

如题所述

1、自定义函数

2、使用connect by子语句的SQL,用sys_connect_by_path函数连接

3、自定义聚合函数

SQL SERVER日志清除的使用方法

1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。

2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。

3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-27
尚子素说的没错。
这种问题,我平常除了喜欢用动态sql写法,下来就是喜欢这个写法啦,
所以补充一下尚子素的说明:

首先,确定你要合并的列
SELECT user_name FROM dbo.users

其次,将其以xml格式输出
SELECT user_name FROM dbo.users FOR XML PATH

然后,去除包裹的节点名称
SELECT ',' +user_name FROM dbo.users FOR XML PATH('')
(这里,','+user_name以后变成了无列名状态,','可以填充具体的分隔符,PATH('')是自定义外层节点名称)

下来,去掉最终结果首位的分隔符,以空字符替代(PS:这样不用数长度)
SELECT STUFF((SELECT ','+user_name FROM dbo.users FOR XML PATH('')),1,1,'')本回答被网友采纳
第2个回答  2016-01-20
你的意思是单独一列数据,然后拼成一行数据,是这个意思吧。比如一列中有三行,分别是“天”“地”“人”。你现在想得到一行数据“天地人”,是这个意思吧。
那么方法就是for xml path,具体的写法要根据实际情况来写,这里只能说利用这个方法,到底怎么写就要根据你的字段具体写了。
要知道具体使用方法只要在baidu上搜索:sqlserver for xml path,就可以得到很多提示,比我写的好。
第3个回答  2016-01-21

可以使用stuff函数结合xml path(),

比如:

SELECT STUFF( 
(SELECT ','+CONVERT(VARCHAR,sv.number) FROM MASTER.dbo.spt_values AS sv WHERE sv.[type]='p' AND sv.number <10 FOR XML PATH('')
),1,1,'')

结果为:0,1,2,3,4,5,6,7,8,9

第4个回答  2016-01-24
列拼接,STUFF FOR XML PATH()方法,你可以查下的,这个讲的很多的,可以自定义中间的间隔符的,上面的那个例子就是其中之一
相似回答