首先我要指出,我的问题将非常接近这个问题:map-column-data-to-a-value-oracle
请先快速阅读。
现在在我的情况下,我需要完全相同的东西,但不是主查询。相反,我需要将信息作为我查询的一部分。
我有这张桌子:
someId | someValue | dataType
1 | 500 | 1
2 | someValue | 2
我知道dataType“1”表示“整数”。我也知道dataType列中其他值的含义。
所以我想选择表中的所有条目,但是将它们的dataTypes作为人类可读的值而不是它们的数字:
结果:
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可用。
答案 0 :(得分:5)
摆脱子查询:
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