SQL:如果值与提供的列表值之一不匹配,则更新行

时间:2018-02-08 21:27:03

标签: sql sql-server

我有一个包含单列的表格,如下所示:

fruit
------
appLe
applE
cheRry
Cherry

,提供的列表为["aPple", "chErry"]

是否可以运行单个SQL查询来更新此表?

fruit
------
aPple
aPple
chErry
chErry

基本上,如果行匹配["aPple", "chErry"]的值(不区分大小写),请将其替换为该值。

这里的关键约束(阻止我的是)使用单个查询,所以我不能

update my_table set fruit = 'aPple' where UPPER(fruit) = UPPER('aPple')
update my_table set fruit = 'chErry' where UPPER(fruit) = UPPER('chErry')

将是2个查询。

3 个答案:

答案 0 :(得分:1)

也许你想要这个:

UPDATE my_table
SET fruit = CASE WHEN fruit = 'apple' THEN 'aPple'
                 WHEN fruit = 'cherry' THEN 'chErry'
            END

答案 1 :(得分:0)

默认情况下,SQL Server具有不区分大小写的比较。你试过吗?

update t
    set fruit = 'aPple'
    where fruit = 'aPple';

答案 2 :(得分:0)

在更新中使用案例陈述:

UPDATE my_table 
    SET fruit = CASE 
      WHEN UPPER(fruit) = UPPER('aPple') THEN 'aPple' 
      WHEN UPPER(fruit) = UPPER('chErry')  THEN 'chErry'
    END