SQL,选择if或select case

时间:2013-09-11 15:52:06

标签: sql oracle

我不确定我所尝试的是否可以实现!!

我正在尝试编写SQL查询,将根据用户输入执行select语句。

所以如果用户输入= 1,那么我希望它从实际表中选择。 如果用户输入= 0,那么我希望它从双选择0或null。 (如果可能的话)。

所以这是参数,用于从用户获取输入。 ?i_userkey:'':null? 如果用户输入1,则它将null更改为1.

我想使用此参数编写查询。像这样的东西。

以下是逻辑。

IF i_userkey = 1 then 
       select ID,Gender,Age from TableA
If i_userkey = 0 then
       select 0 or null from dual.

这可能吗?

2 个答案:

答案 0 :(得分:2)

这个怎么样:

SELECT 
  CASE WHEN i_userkey = 1 THEN ID ELSE NULL END AS ID 
  CASE WHEN i_userkey = 1 THEN Gender ELSE NULL END AS Gender
  CASE WHEN i_userkey = 1 THEN AGE ELSE NULL END AS Age
FROM TableA

这至少可以为您提供一致的三列结果集。让查询返回不同的列数不会起作用。

答案 1 :(得分:-1)

select ID,Gender,Age 
from TableA
where i_userkey = 1
union all
select 0, 0, 0 
from dual
where i_userkey = 0

您可能必须调整双选中的数据类型以匹配TableA