使用';时发生转换错误';在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)
,因为它可以处理所有可能的值)。