Oracle-将列数据映射到值

Wor*_*orp 2 sql oracle

让我首先指出,我的问题将非常接近这个问题:将列数据映射到一个值oracle

请快速阅读该内容。

现在,就我而言,我需要完全相同的东西,但不需要作为主要查询。相反,我需要这些信息作为查询的一部分。

我有这张桌子:

someId | someValue | dataType
   1   |    500    | 1
   2   | someValue | 2
Run Code Online (Sandbox Code Playgroud)

而且我知道dataType“ 1”表示“ Integer”。我也知道dataType列中其他值的含义。

因此,我想选择表中的所有条目,但将其dataTypes作为其人类可读的值而不是其数字:

结果:

1, 500, Integer
2, someString, String
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*nHC 7

摆脱子查询:

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
Run Code Online (Sandbox Code Playgroud)