首页 > 解决方案 > 在类型为 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

我需要一个将数值映射到字符串的列。那可能吗?

标签: sqloracle

解决方案


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

推荐阅读