T-SQL CTE + 选择嵌套大小写时 + 转换 CSV 中的表列返回错误



我有以下SQL语句:

WITH CTE(Col01,...,Col05) AS
(
    ...
)
SELECT   ....
        ,CASE ....
              WHEN ... THEN CASE ...
                                 WHEN 0 THEN ...
                                 ELSE (SELECT STUFF((SELECT ',' + CAST(Col002 AS NVARCHAR(10)) FROM TableOne WHERE Col05=CTE.Col05 FOR XML PATH('')),1, 1,''))
                            END
              WHEN ... THEN ...
              WHEN ... THEN ...
              ELSE ...
        END
        ,...
FROM TableOne 
CROSS APPLY CTE 
WHERE TableOne.Col01=CTE.Col01

我想从列表信息返回 CSV 列表 - 当我单独执行它时,语句可以正常工作,但在上面的 sql 语句语法中,它会生成以下错误:

Msg 245,级别 16,状态 1,第 1
行 将 nvarchar 值"101,102,103,108,109,110,112,113,114,115,116,117,118,119,120,121,122,126,130,135,164,165,218"转换为数据类型 int 时转换失败。

如果我只替换"1"或 1 的语句,它不会给我任何错误。为什么它试图将 CSV 列表转换为 int?

我真的很抱歉我没有提供有关查询的更多信息 - 现在我已经找到了导致问题的原因,我看到如果没有显示整个图片,很难找到它。

当我将所有返回可能的值转换为 nvarchar 时,该问题已得到解决。出于某种原因,如果其中一个返回值是 int,SQL 服务器也会尝试将所有值转换为 int。

此链接有助于解决我的问题:

http://www.fmsinc.com/free/newtips/sql/sqltip10.asp

编辑:我想这是有道理的 - 你可以根据情况得到不同的结果 - 当语句,但它们应该是一种类型。

最新更新