簡體   English   中英

SQL Server 2016數據類型轉換錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM