更新多个条件的多个记录

时间:2016-11-10 19:49:32

标签: sql

我正在尝试更新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,但它失败了。我知道最后一个语法是关闭的,但这也是我需要尝试的。

2 个答案:

答案 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`