sql - SQL Server:案例表达式返回 0 而不是空字符串
问题描述
以下是不使用转换为 varchar 时返回 0 的查询。它比较整数值
SELECT
*,
CASE
WHEN Duration IS NULL
THEN CONVERT(VARCHAR, '')
ELSE Duration
END AS Duration
FROM
Contribution
WHERE
CreatedBy = @in_userID AND ContentStatus = @ContentStatus
UNION ALL
SELECT
*,
CASE
WHEN Duration IS NULL
THEN CONVERT(VARCHAR, '')
ELSE Duration
END AS Duration
FROM
Training
WHERE
CreatedBy = @in_userID AND ContentStatusValue = @TrainingStatus
在使用 union all 时,不使用 convert 大小写返回 0 而不是 ''。使用转换时问题已解决。
谁能说出为什么会这样?
解决方案
我怀疑你Duration
有INT
类型,所以你可以进行对话:
SELECT c.col1, c.col2, ISNULL(CAST(c.Duration AS VARCHAR(255)),'') Duration
FROM Contribution c
WHERE c.CreatedBy = @in_userID AND
c.ContentStatus = @ContentStatus
UNION ALL
SELECT t.col1, t.col2, ISNULL(CAST(t.Duration AS VARCHAR(255), '')
FROM Training t
WHERE t.CreatedBy = @in_userID AND
t.ContentStatusValue = @TrainingStatus;
推荐阅读
- c# - Is the record "with" operator supported in CSharpScript?
- reactjs - How to make next-auth User Session Data Globally accessible from _app.js server-side?
- node.js - 猫鼬需要帮助编写查询
- angular - 从 Angular 11 中删除包
- python - 使用 for 循环定义 nn.parameters
- excel-formula - Excel IF函数基于单元格注释文本
- active-directory - LDAP 中的 Wildfly Elytron 动态组
- ios - 使用 Swift 以编程方式更改 IOS 的选定选项卡
- javascript - 从手机浏览器(iOS)访问本地开发服务器 ReactJS Apollo 客户端
- shell - 字符串比较在fishshell函数中不起作用