我有以下查询。由于某种原因,我将多个SELECT语句用作要使用的工具,因此第一行中的FROM子句需要一个SELECT值。
DOCUMENT_ID是整数类型的列。我需要DOCUMENT_ID作为逗号分隔的值,作为此查询的输出。 (例如1234,7786、6478、5835)
问题是我遇到以下错误。有人可以帮忙吗。
将varchar值','转换为数据类型int时转换失败。 我读了一些有关使用CAST转换为NVARCHAR的文章,但是我遇到了同样的语法错误。到底可以在哪里应用?
SELECT DOCUMENT_ID FROM (
SELECT STUFF
(
(
SELECT ',' + em.DOCUMENT_ID
FROM(
SELECT distinct a.DOCUMENT_ID AS DOCUMENT_ID FROM A_DOCUMENT a
inner join PRICE_RECORD wk ON a.DOCUMENT_ID = wk.DOCUMENT_ID
WHERE a.APPROVAL_STATUS = 'Submitted'
) em
ORDER BY em.DOCUMENT_ID FOR XML PATH('')
),
1, 1, '') AS DOCUMENT_ID
) AS Output
谢谢。
答案 0 :(得分:3)
如果DOCUMENT_ID
是int
,则将',' + em.DOCUMENT_ID
替换为以下之一:
CONCAT(',', em.DOCUMENT_ID) --SQL Server 2012+
',' + CONVERT(varchar(10),em.DOCUMENT_ID)
--Or, if you prefer CAST
',' + CAST(em.DOCUMENT_ID AS varchar(10))
int
的{{3}}比varchar
高,因此您的逗号(','
)被隐式转换为int
,这导致了转换错误。