2016-07-22 36 views
1

我有一個表空值和數據類型的所有列是整數/實數。 如果在將數據寫入csv時該字段爲空,我想寫'無數據'。帶有條件和寫入CSV的SQL IFNULL

這是testTable。

id  test1 test2 test3 
------ ------ ------ ------ 
1  1  2  3 
2    5  6 
3  7    9 
4    11  12 

我想只有在列test1的顯示 '串',其中ID爲2 我的sql語句

SELECT id, (ifnull(test1, 'string')) as test1, test2, test3 from testTable;

它產生這一點。

id  test1 test2 test3 
------ ------ ------ ------ 
1  1  2  3 
2  string 5  6 
3  7    9 
4  string 11  12 

有沒有辦法爲ifnull提供條件子句還是有另一種方法來生成這個最終表?

我想要的最終testTable。

id  test1 test2 test3 
------ ------ ------ ------ 
1  1  2  3 
2  string 5  6 
3  7    9 
4    11  12 

謝謝。

回答

1

它也可以使用CASE語句做得好,這可能是更清潔,如果快有是大量的數據。

SELECT id, 
     CASE WHEN test1 IS NULL AND id = 2 THEN 'string' ELSE test1 END, 
     test2, 
     test3 
    from testTable; 
+0

啊,我剛纔在聲明中使用case並查看你的代碼時,我完全錯了。再次感謝! –

1

你可以使用相關子查詢,只有在「串」拉當ID爲2:

SELECT id, ifnull(test1, 
        (select 'string' from testTable tt 
        where tt.id =2 and testTable.id = tt.id)) as test1, 
     test2, test3 
from testTable; 
+0

我不知道你可以把子查詢放在那裏。謝謝! –