sql-server - 选择计数时在字符串上将 varchar 转换为 int 的 SQL 错误
问题描述
我有一个 SQL 查询,用于创建一个文本文件,其中包含标题行、详细信息行,最后是带有“已选择 X 行”消息的行。因为它是用于使用大写 cedilla 作为分隔符的报告,所以我选择整个标题行作为单个字符串(用省略号截断以节省空间):
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 代码的行数,那么整个事情都可以正常工作。但是,由于某种原因,通过联合添加行计数行会导致查询引发转换错误:
Conversion failed when converting the varchar value 'REC_TYPEÇPLAN_IDÇ...DATE_ANSWERED' to data type int.
我可以对行计数部分做些什么来防止该错误?
解决方案
因为 COUNT 返回一个 int,然后您尝试将其添加到字符串中。由于数据类型优先,所有内容都将尝试转换为 int。
只需将您的最后一个查询更改为这样的内容。
SELECT convert(varchar(10), COUNT(*)) + 'rows selected'
推荐阅读
- azure-devops - 如何在 azure-pipelines.yml 文件中为 docker 图像添加自定义构建标签?
- javascript - React-Native:下载和运行外部 Javascript 文件
- makefile - 需要重新制作的打印目标
- javascript - 使用 Vue 鼠标悬停事件在两个元素上设置样式非常滞后。有一个更好的方法吗?
- python - 将使用 ui 文件加载的 .py 转换为 exe 时出错
- c# - 裁剪具有多个 X 和 Y 点的图像 c#
- rest - 使用 REST API 更新 Hybris 数据中的关系,未保存嵌套关系
- python - 如何使用 python 计算 slearn.roc_auc_score?
- c++ - 为什么当 i++ 被定义为 for 循环中的增量时没有立即增量,而它反映在 if 语句的情况下?
- kubernetes - 在入口控制器后面的 Kubernetes 集群中运行 Graylog