Oracle - 将列数据映射到一个值

3

首先要指出的是,我的问题与这个问题非常接近:map-column-data-to-a-value-oracle

请先快速阅读一下那篇文章。

现在,在我的情况下,我需要完全相同的东西,但不是作为主查询。相反,我需要将此信息作为我的查询的一部分。

我有这张表:

someId | someValue | dataType
   1   |    500    | 1
   2   | someValue | 2

我知道dataType为"1"意味着"整数"。我还了解dataType列中其他值的含义。

因此,我想选择表中的所有条目,但要将它们的dataType显示为人类可读的值,而不是数字:

结果:

1, 500, Integer
2, someString, String

尝试应用我链接的问题的解决方案,我创建了一个子查询,如下:

SELECT
someId,
someValue,
(
  SELECT CASE
  WHEN dataType = 1 THEN 'INTEGER'
  WHEN dataType = 2 THEN 'FLOAT'
  WHEN dataType = 3 THEN 'TEXT'
  ELSE 'DATE'
END
  myTable
) as myDataType

我将得到一个返回多个结果的子查询,Oracle会报错。

由于我通过SQL直接访问数据库,因此我需要一个“纯SQL”解决方案。否则,我可以通过映射,例如在PHP中解析值。但是这里不可能这样做。我正在向数据库发送一些查询,以尝试收集有关数据和结构的信息,我们对此一无所知。因此只能使用SQL。

1个回答

8
摆脱子查询:
SELECT someId,
       someValue,
       CASE
          WHEN dataType = 1 THEN 'INTEGER'
          WHEN dataType = 2 THEN 'FLOAT'
          WHEN dataType = 3 THEN 'TEXT'
          ELSE 'DATE'
       END as Datatype
from  myTable

非常好用。谢谢! - Worp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接