sql-server - 当要求返回 VARBINARY 列值时,CASE 返回汉字
问题描述
我正在尝试使用以下查询从键/值表中检索值。如果键列的值是“OrderNumber”或“CustomerNumber”,那么,我想从同一个键/值表中获得另一列的值(valHash )而不是val列(我们几乎可以称之为键/值/哈希值表)。
但是当我运行查询时,当我的 CASE 满足它的第一个条件时,我会得到中文字符:
SELECT IssueId,
customfield,
CASE
WHEN customfield IN ('OrderNumber', 'CustomerNumber') THEN valHash
ELSE val
END AS Value,
valHash
FROM MyTable
valHash 列数据类型为VARBINARY
.
解决方案
该问题可能发生在 Val。由于一列具有一种数据类型,因此您可以选择:
SELECT IssueId,
customfield,
CASE
WHEN customfield IN ('OrderNumber', 'CustomerNumber') THEN valHash
ELSE CAST (val AS VARBINARY (500))
END AS Value,
valHash
FROM MyTable
如果您希望所有内容都作为字符串,您可能需要使用以下命令:
SELECT IssueId,
customfield,
CASE
WHEN customfield IN ('OrderNumber', 'CustomerNumber') THEN CONVERT (NVARCHAR (50), Valhash, 2)
ELSE val )
END AS Value,
valHash
FROM MyTable
如果你坚持区分 VARCHAR 和 VARBINARY 是不同的情况,你需要一个额外的列。
推荐阅读
- apache-spark - 在 Spark 上执行多个 SQL 查询 - 未找到表或视图
- javascript - 返回以 000.. 开头的整数的长度
- azure-signalr - SignalR 服务大消息选项
- android - 使用Android Management API创建企业时如何获取enterpriseToken?
- excel - 透视饼图:显示相对于总数的百分比
- java - writer.writeAll(rs, true) 创建一个空文件
- python - 在 HTML 中的标头之后打印“p”标签的内容
- python - 使用 OpenCV 3.4 加载 CNN tensorflow 模型时出错
- mysql - SQL & Grafana & Microsoft Teams 传入 Webhook Hook
- reactjs - 使用 View 或 ScrollView 包装时,react-navigation 嵌套堆栈导航器不可见