SQL 时设置大小写

SET with case when SQL

我正在尝试更新此 table 的 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 个。

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

试试这个 (T-SQL):

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

你不需要第二个条件。但是 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%');