in .. where在选择语句中的情况

时间:2019-12-24 14:02:53

标签: sql oracle

您好stacoverflow社区,

我有下表。

  m_id s_s                    s_e                 a_s_t      comm  cosk
    101  2019-12-23 13:08:49  2019-12-23 13:13:12   NS        dt2   p2
    101  2019-12-23 13:13:12  2019-12-23 13:14:35   UP        dt2   p2
    101  2019-12-23 13:14:35  2019-12-23 13:14:56   MS        dt4   p4

在a_s_t an为UP的情况下,我想将comm和cosk列设置为null。

我可以在select语句中使用case语句吗?

2 个答案:

答案 0 :(得分:2)

您可以使用case表达式返回此类数据:

select (case when a_s_t <> 'UP' then comm end) as comm,
       (case when a_s_t <> 'UP' then cosk end) as cosk,
       ...  -- other columns
from t;

要实际更改数据,您需要使用update

答案 1 :(得分:0)

要更新值,您可以执行以下操作:

UPDATE mytable
SET comm = CASE WHEN a_s_t <> 'UP' THEN comm END,
    cosk = CASE WHEN a_s_t <> 'UP' THEN cosk END

您无需指定ELSE条件,因为它将默认为NULL,这正是您想要的。只需将mytable更改为表的实际名称即可。