2012-09-06 93 views
1

我有這個任務,如果值爲空,我需要分配一個值。Oracle sql - 將值賦給空值或保留值,如果不爲空

如果不爲空,然後我要保留已經存在的價值.. (這是什麼絆倒了我),我知道它一定是容易..

感謝, 鋁

+1

你是什麼意思:賦值 更新表嗎? PL/SQL中的變量? 在SQL中:select ... from ... where column_name IS NULL; 查看NVL功能。 NVL可以讓您用查詢結果中的字符串替換null(作爲空白返回)。如果expr1爲空,則NVL返回expr2。如果expr1不爲空,則NVL返回expr1。 EX:從顧客處選擇nvl(姓氏,'未知'); –

回答

1

Coalesce()是你應該使用的,它也是ansi-99標準的一部分。

Update [Table] Set 
    Col1 = coalesce(Col1, @Col1Val) 
    ,Col2 = coalesce(Col2, @Col2Val) 
Where ... 
+0

如果沒有'where col is null',所有的行都會被更新,甚至包含一個值(它們將被更新爲現有的值)。使用'col col'爲null'時,不需要合併。 – Glenn

+0

@Glenn where子句被忽略。您的解決方案僅適用於每個語句的單個列。如果您想更新多個字段,則需要爲每個字段更新一次。 –

+0

@Zachary_Yates同意。也許編輯顯示一個額外的列。 – Glenn

2
UPDATE myTable 
    SET myCol = myDefaultValue 
    WHERE myCol IS NULL;