SQL 在选择计数时将 varchar 转换为 int 字符串时出错

SQL error converting varchar to int on string when selecting count as well

我有一个 SQL 查询,用于创建一个文本文件,其中包含 header 行、详细信息行,最后是包含 'X rows selected' 消息的行。因为它是针对使用大写变音符作为分隔符的报告,所以我 select 整个 header 行作为单个字符串(用省略号截断以保存 space):

SELECT 
       'REC_TYPE'+CHAR(199)+'PLAN_ID'+CHAR(199)+...+'DATE_ANSWERED'
UNION ALL

SELECT  REC_TYPE+CHAR(199)+
        PLAN_ID+CHAR(199)+
        ...+
        Convert(char(10),DATE_ANSWERED,101)

FROM
       #My_Temp_Table  

UNION ALL

SELECT COUNT(*) + 'rows selected'

FROM
       #My_Temp_Table

如果我不通过 SQL 代码包括行数,那么整个过程都很好。但是,出于某种原因,通过 union 添加行计数行会导致查询抛出转换错误:

Conversion failed when converting the varchar value 'REC_TYPEÇPLAN_IDÇ...DATE_ANSWERED' to data type int.

我可以对行计数部分做些什么来防止该错误?

因为 COUNT returns 一个 int 然后你试图将它添加到一个字符串。由于数据类型优先,所有内容都将尝试转换为 int。

只需将您的上一个查询更改为类似这样的内容即可。

SELECT convert(varchar(10), COUNT(*)) + 'rows selected'