如何在纯 SQL 中转换查询结果以获得更好的可读性
Posted
技术标签:
【中文标题】如何在纯 SQL 中转换查询结果以获得更好的可读性【英文标题】:How to transform query results for a better readability in pure SQL 【发布时间】:2019-09-30 13:19:58 【问题描述】:在数据库中,我有一列带有代码编号(1 到 3)。每个数字对应一个状态(例如 PATCHED = 1 - NOTPATCHED = 2 - NOTAPPLICABLE = 3)。这些状态已记录在案,但未存储。
当我提出一个简单的请求时
SELECT UID, STATES FROM COMPUTERS
它返回类似的东西
0001 1
0002 1
0003 3
0004 2
...
在纯 SQL 中有没有办法用它们的含义来替换状态,以获得具有更好可读性的东西,例如:
0001 PATCHED
0002 PATCHED
0003 NOTAPPLICABLE
0004 NOTPATCHED
...
我想再次指出,状态意义没有被存储,也不能被存储。
非常感谢您的帮助。
威廉
【问题讨论】:
code number
到state
-description 的映射在哪里?如果这也在数据库中,那将是最好的,否则您将不得不维护映射两次...
【参考方案1】:
这可以通过CASE
表达式轻松完成:
SELECT
UID,
CASE STATES
WHEN 1 THEN 'PATCHED'
WHEN 2 THEN 'NOTPATCHED'
WHEN 3 THEN 'NOTAPPLICABLE'
END AS States_new
FROM COMPUTERS
【讨论】:
不要认为这是一个好主意,除非没有办法在数据库中维护映射code number
- state
,因为当映射更改时您必须更改查询任何方式(例如新州)...
原帖说"I would like to point out again that states meaning are not stored and can't be."
好的,但是尽管存储在数据库中,但可能有一种方法可以在应用程序和数据库之间共享信息,这会更好。顺便说一句:我没有投反对票或其他任何事情,因为这是给出数据的唯一解决方案 - 但我想声明,考虑到未来的维护,这绝对不是你想要的。
我 100% 同意你的看法 :)以上是关于如何在纯 SQL 中转换查询结果以获得更好的可读性的主要内容,如果未能解决你的问题,请参考以下文章
如何编写此查询以在 Sql Server 中获得更好的性能?删除子字符串行