UPDATE importing.table
SET SheetName = CASE
WHEN SheetName= 'balance_currency'
THEN 'TY_balance_currency'
WHEN SheetName = 'rate_code'
THEN 'TY_rate_code'
END
当我两次运行此代码时,除此代码中指定的SheetName
之外,整个列SheetName
都为空。当我只想更新此代码中指定的SheetName
时,如何防止这种情况发生?
谢谢
答案 0 :(得分:3)
除了在case语句中指定的2之外,还有另一个工作表名称值。因此,除了那两个值之外,它都设置为NULL
如果您只想更改那2,则可以添加WHERE子句
UPDATE importing.table
SET SheetName = CASE
WHEN SheetName= 'balance_currency' THEN 'TY_balance_currency'
WHEN SheetName = 'rate_code' THEN 'TY_rate_code'
END
WHERE SheetName in ('balance_currency', 'rate_code')
或添加一个ELSE
UPDATE importing.table
SET SheetName = CASE
WHEN SheetName= 'balance_currency' THEN 'TY_balance_currency'
WHEN SheetName = 'rate_code' THEN 'TY_rate_code'
ELSE SheetName
END
注意:选项1效率更高,因为它仅更新您需要的行,而不影响其他行
答案 1 :(得分:0)
您可以根据需要使用Replace
。
UPDATE importing.table
set SheetName = replace(replace(SheetName,'balance_currency','TY_balance_currency'),'rate_code','TY_rate_code')