首页 > 解决方案 > 条件 SQL 执行

问题描述

我正在寻找一种方法,如果它是真的,我可以执行查询的一部分,如果它是假的,我会执行另一部分

例如:

我有一个记录表

身份证 | 用户 | LOG_MSG | LOG_DATE
--------------------------------------
1 | ADM | 登录成功 | 21-11-2018

当 ADM 登录时,我想执行

Select OSUSER, LOG_DATE from LOG

但是当其他人登录时,我想将 LOG_MSG 添加到查询中

我的问题:这可以在 sql 中获得吗?

标签: sql

解决方案


SQL 查询返回一组固定的列。因此,您只能使用动态 SQL 或多个查询来做您想做的事情。

但是,您可以屏蔽“ADM”的消息:

select l.OSUSER, l.LOG_DATE,
       (CASE WHEN l.OSUSER <> 'ADM' THEN LOG_MSG END) as LOG_MSG
from LOG l;

推荐阅读