有没有更好的方法从表中选择一个布尔值?

时间:2013-12-04 03:13:51

标签: sql oracle

我正在尝试从表中选择结果,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的最佳解决方案还是有更好的方法?

1 个答案:

答案 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;