2013-10-03 123 views
2

我有以下說法,但我想要做的是找出一種方法來說,如果它返回空插入N/A。我會使用if語句還是在數據庫中設置默認值?MYSQL查詢列是否爲空

代碼:

$query = $this->db->query("SELECT f.film_id 'Film ID', f.film_name 'Film Name', u.user_first_name 'First Name', u.user_surname 'Surname', u.user_address_line1 'Address1', u.user_address_line2 'Address2', u.user_towncity 'City', u.user_us_state_id 'US State', u.user_non_us_state_county 'Non US State', u.user_country 'Country' FROM films f 
INNER JOIN users u ON u.user_id = f.user_id WHERE f.active = 0"); 


return $query; 
+0

哪一列可以爲空? – Barmar

+0

你的意思是如果查詢沒有返回任何行?你應該在PHP中做到這一點。 – Barmar

+2

「空」是指「空字符串」還是「NULL」? – TheWolf

回答

2

這將在執行查詢時用N/A替換列中的空字符串。

SELECT ..., IF(column = '', 'N/A', column) AS column, ... 
1

您可以使用和更新設置列變爲N/A,其中列爲空。

UPDATE tablename SET column='N/A' WHERE column IS NULL 
+0

我不知道爲什麼這被接受,因爲他在上面的評論中寫道,他的意思是空字符串,而不是空。 – Barmar

0

您可以使用​​3210功能這樣容易掩蓋一個空列:

SELECT 
    f.film_id 'Film ID', 
    f.film_name 'Film Name', 
    coalesce(u.user_first_name, 'N/A') 'First Name', 
    // ^^ Guessing that this might sometimes be the null column. 
    u.user_surname 'Surname', 
    u.user_address_line1 'Address1', 
    u.user_address_line2 'Address2', 
    u.user_towncity 'City', 
    u.user_us_state_id 'US State', 
    u.user_non_us_state_county 'Non US State', 
    u.user_country 'Country' 
FROM 
    films f 
     INNER JOIN users u 
      ON u.user_id = f.user_id 
WHERE f.active = 0 

這將放在「N/A」,如果名字字段爲空。