[英]SQL Server 2016 data type conversion error
我有以下查詢。 由於某種原因,我將多個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
謝謝。
如果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
的數據類型優先級高於varchar
,因此您的逗號( ','
)被隱式轉換為int
,這導致轉換錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.