[英]Oracle: how to set a value in sql using variables in update sql statement
[英]How do I update two variables in a oracle sql server update using case statement
我正在嘗試更新 Oracle 服務器中的兩個變量,如下所示:
UPDATE UserTable
SET user_email='asdf@company.com',
(CASE WHEN reason != '' THEN why_update= 'change email server' END)
WHERE user_id = 123
我只想在用戶提供更新原因的情況下更新 why_update 列,否則保持列不變(它是 varchar 類型,可以為 NULL)。
還是有其他更好的解決方案?
這將起作用:
UPDATE UserTable
SET user_email='asdf@company.com',
why_update= CASE WHEN reason != '' THEN 'change email server' else why_update END
WHERE user_id = 123
如果您嘗試更新多個列,則需要這樣做:
UPDATE UserTable
SET user_email = 'asdf@company.com',
why_update = CASE WHEN reason IS NOT NULL THEN 'change email server' END
WHERE user_id = 123;
您最終將始終更新兩列 - 在這種情況下,如果reason
是 null,那么為什么會將why_update
設置為 NULL,從而丟失之前的任何值。 如果您不希望這種情況發生,則需要在CASE
表達式中添加ELSE why_update
子句。
注意,我已將您的!= ''
更改為IS NOT NULL
,因為空字符串 ( ''
) 在 Oracle 中被識別為 NULL。 NULL 永遠不會匹配equals
或not equals
檢查,所以你上面的CASE
表達式不會工作,因為我懷疑你希望它工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.