我正在尝试更新SQL表中的几条记录。我的数据看起来像这样
Name
Record1_Name
Record1_Name_something
Record2_Data_Name
Record2_Name_something
结果必须
Name
Record1
Record2
Record2_Data
这是我到目前为止的代码
UPDATE Table1
SET Column1 =
CASE 1
WHEN '%Record1%' THEN 'Record1'
WHEN '%Record2%' AND '%Data%' THEN 'Record2_Data'
WHEN '%Record2%' AND NOT '%Data%' Then 'Record2'
第一个没有问题的时候。第二个我添加了AND,但它失败了。我知道最后一个语法是关闭的,但这也是我需要尝试的。
答案 0 :(得分:3)
我认为你正在寻找这样的东西:
UPDATE Table1
SET Column1 = CASE
WHEN Column1 LIKE '%Record1%' THEN 'Record1'
WHEN Column1 LIKE '%Record2%' AND Column1 LIKE '%Data%' THEN 'Record2_Data'
WHEN Column1 LIKE '%Record2%' AND Column1 NOT LIKE '%Data%' Then 'Record2'
ELSE 'Record3'
END
注意:如果没有满足大小写布尔表达式,则需要指定返回的值。否则,CASE
会返回NULL
。
答案 1 :(得分:1)
我认为您的案例语法已关闭 - https://dba.stackexchange.com/questions/154721/difference-in-results-between-case-syntax
这应该有效
`UPDATE Table1
SET Column1 = CASE WHEN NAME LIKE '%Record1%' THEN 'Record1' WHEN NAME LIKE '%Record2%'
AND NAME LIKE '%Data%' THEN 'Record2_Data' WHEN NAME LIKE '%Record2%'
AND NAME NOT LIKE '%Data%' THEN 'Record2' end`