【问题标题】:Oracle - Map column data to a valueOracle - 将列数据映射到一个值
【发布时间】:2017-03-13 15:47:26
【问题描述】:

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

请先快速阅读。

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

我有这张桌子:

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

而且我知道数据类型“1”的意思是“整数”。我也知道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

我会得到一个返回超过 1 个结果的子查询,Oracle 会抱怨。

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

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    去掉子查询:

    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
    

    【讨论】:

    • 像魅力一样工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    相关资源
    最近更新 更多