SET with case when SQL



我正在尝试更新这个表的status列,我使用了以下命令:

UPDATE table_a
SET status = CASE 
WHEN test_group LIKE 'Control' THEN 0
WHEN test_group NOT LIKE 'Control' THEN 1
END;

但它似乎没有工作,它实际上只是给status的每个观察值一个1。我只想要有"控制"这个词的观察结果;在status和没有"控制"这个词的观察中取0;取1。此列的默认值不是0或1。

您不需要第二个条件。但是您确实需要LIKE的通配符。我建议:

UPDATE table_a
SET status = (CASE WHEN test_group LIKE '%Control%' THEN 0 ELSE 1 END);

在许多数据库中,可以将其简化为:

UPDATE table_a
SET status = (test_group NOT LIKE '%Control%');

Try this (T-SQL):

UPDATE table_a
SET status = CASE 
WHEN charindex('Control', test_group)>0 THEN 0
ELSE 1
END;
UPDATE table_a
SET status = CASE 
WHEN test_group LIKE '%Control%' THEN 0
WHEN test_group NOT LIKE '%Control%' THEN 1
END;

相关内容

  • 没有找到相关文章

最新更新