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%');
我正在尝试更新此 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%');