我正在寻找一种方法,该方法可以让我执行查询的一部分(如果为真),而另一部分为假(
)例如:
我有一个日志表
ID | OSUSER | LOG_MSG | LOG_DATE ---------------------------------------- 1 | ADM | lOGIN SUCCES | 21-11-2018
当ADM登录时,我要执行
Select OSUSER, LOG_DATE from LOG
但是当其他人登录时,我想将LOG_MSG添加到查询中
我的问题:这可以在sql中获得吗?
答案 0 :(得分:1)
SQL查询返回一组固定的列。因此,您只能使用动态SQL或多个查询来做您想做的事情。
但是,您可以为“ ADM”屏蔽消息:
select l.OSUSER, l.LOG_DATE,
(CASE WHEN l.OSUSER <> 'ADM' THEN LOG_MSG END) as LOG_MSG
from LOG l;
答案 1 :(得分:0)
像下面这样的情况如何
select ID, case when OSUSER='ADM' then OSUSER else LOG_MSG end,LOG_DATE
from LOG