使用';时发生转换错误';在STUFF-SQL中

使用';时发生转换错误';在STUFF-SQL中,sql,sql-server,Sql,Sql Server,我有以下疑问: select STUFF((SELECT ',' + rr1._cv_id FROM #reportrows rr1 WHERE rr1._c_id=rr._c_id FOR XML PATH('')),1, 1,null)FROM #reportrows rr 在这个查询中,\u cv\u id是整数类型。运行此查询后,我会看到以下错误: Conversion failed when converting the varchar value ',' to data ty

我有以下疑问:

select STUFF((SELECT ',' + rr1._cv_id 
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null)FROM #reportrows rr
在这个查询中,\u cv\u id是整数类型。运行此查询后,我会看到以下错误:

Conversion failed when converting the varchar value ',' to data type int.

有人帮忙吗

id不是字符串,因此请将其转换为:

SELECT STUFF( (SELECT ',' + CONVERT(VARCHAR(MAX), rr1._cv_id)
. . .

看起来列cv_id是数字数据类型。因此,在使用逗号连接之前,需要先转换为字符串

select STUFF((SELECT ',' + convert(varchar(10), rr1._cv_id)
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null) FROM #reportrows rr

您需要将
rr1.\u cv\u id
转换为字符串

select STUFF((SELECT ',' + CAST(rr1._cv_id AS VARCHAR(20))
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null)FROM #reportrows rr
varchar(MAX)
在这里可能有些过分(如果
rr1.\u cv\u id
是一个
int
,那么它最多只需要是一个
varchar(11)
,因为它可以处理所有可能的值)。