如何创建一个查询,将匹配的记录更新为大写的任何情况

时间:2017-09-01 14:28:58

标签: sql postgresql sql-update

我有一个有效状态列表,分别是'dc','Nu','tN','VA'。 我还有一个无效/垃圾状态列表,例如'aa','BB','CC'

现在我想进行更新,以大写形式更新有效状态,以便我可以获得以下更新数据:'DC','NU','TN','VA'

这不起作用:

update states set state = upper(state) where state in ('DC', 'NU', 'TN', 'VA');

如果小案例有效,可以将小案例更新为CAPS吗?

更新

在任何情况下我都可以拥有特定的状态,例如'DC'或'dc'或'dC'或'Dc'。显然我可以做update states set state = upper(state) where state in ('DC', 'dc', 'dC', 'Dc')之类的事情。但它为同一个州多次提及。有没有优雅的方式?

1 个答案:

答案 0 :(得分:4)

无需执行in ('DC', 'dc', 'dC', 'Dc')等。您可以强制列Upper()并仅比较这些值:

update states 
set    state = upper(state) 
where  Upper(state) in ('DC', 'NU', 'TN', 'VA');