我正在尝试从表中选择结果,visible
列应该是布尔值('true'或'false'字符串)。这是SQL:
SELECT fldid AS "id",
TRIM(fldlabel) AS "name",
DECODE((select 'T' from dual where fldid in (53,54,7)), 'T', 'true', 'false') AS "visible"
FROM fieldTable
WHERE fldActive = 1
应该可见的fldid
集合将是一个输入参数,但为了这个查询,它们是硬编码的。
如果不使用DECODE,我会为不在集合中的记录获取空值。 DECODE是Oracle的最佳解决方案还是有更好的方法?
答案 0 :(得分:3)
您可以在Oracle中使用decode
。 SQL标准是case
语句,您不需要子查询:
SELECT fldid AS "id",
TRIM(fldlabel) AS "name",
(case when fldid in (53, 54, 7) then 'true' else 'false' end) as visible
FROM fieldTable
WHERE fldActive = 1;