我有一个包含单列的表格,如下所示:
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个查询。
答案 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