sql - 在类型为 number 的列上使用 case 表达式将其输出为字符串
问题描述
在 Oracle DB 中,如果列值等于某个数字,如何在数字类型的列上使用 case 表达式将其输出为字符串?
例如:
SELECT name,
address
CASE
WHEN my_num = 5 THEN 'some_string_one'
WHEN my_num = 10 THEN 'some_string_two'
WHEN my_num = 20 THEN 'some_string_three'
ELSE my_num
END AS my_num_in_string
FROM foo
我上面的问题是我得到了错误
ORA-00932: 不一致的数据类型: 预期的 CHAR 得到了 NUMBER
我需要一个将数值映射到字符串的列。那可能吗?
解决方案
case
表达式的不同返回值必须具有兼容的数据类型。
SELECT name,
address
CASE
WHEN my_num = 5 THEN 'some_string_one'
WHEN my_num = 10 THEN 'some_string_two'
WHEN my_num = 20 THEN 'some_string_three'
ELSE to_char(my_num)
END AS my_num_in_string
FROM foo
推荐阅读
- r - [RShiny][Shinydashboard]根据另一个输入显示/隐藏不同的输入面板
- c++ - 使用 boost 使用自定义键序列化嵌套 unordered_map
- python - 使用 selenium 获取具有内部文本的元素的直接父级的类名
- git - 一种调试 git push/pull 命令中发生的事情的方法?
- python - 诗歌添加包不包含任何功能
- mysql - django AWS EB CLI 无法使用 mysqlclient 进行部署
- spring-batch - 如何调用 Rest API 从 Spring 批处理中读取数据列表
- c++ - 如何在 proto3 中使用其名称获取字段对象
- react-native - React Native:“scrollToIndex 应该与 getItemLayout 或 onScrollToIndexFailed 一起使用”
- javascript - 在不同文件中导入相同的 javascript 模块,共享相同的词法范围