2014-07-23 48 views
0

我無法使用WHEN和WHERE更新NULL行。我的查詢出了什麼問題?Sql Update使用WHEN和WHERE的NULL值

UPDATE `product` SET `city` = CASE `city` 
WHEN NULL THEN 'Gangnam' 
WHEN 'Seouls' THEN 'Seoul' 
END 
WHERE city IN (NULL, 'Seoul') 
+0

也許IFNULL? :) –

回答

4

使用IS NULL比較NULL

UPDATE `product` 
SET `city` = 
    CASE  
      WHEN `city` IS NULL THEN 'Gangnam' 
      WHEN `city` = 'Seouls' THEN 'Seoul' 
    END 
WHERE city is NULL OR city = 'Seoul' 
0

在SQL的時候,用NULL一個comparaison永遠是假的,所以你必須起訴特殊的運算符IS NULL

另一種方法是分裂你查詢二:

UPDATE product SET city ='江南'WHERE city IS NULL

UPDATE product SET city = 'Seouls' WHERE city = '首爾'

1
UPDATE `product` SET `city` = 
CASE 
    WHEN `city` IS NULL THEN 'Gangnam' 
    WHEN `city` = 'Seouls' THEN 'Seoul' 
END 
WHERE city IS NULL OR city = 'Seouls' 

SQL FIDDLE