2013-10-03 3 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

Интересно, почему это было принято, поскольку он написал в комментарии выше, что он означает пустую строку, а не null. – Barmar

0

Вы можете легко покрыть пустой столбец, используя coalesce функцию следующим образом:

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», если первое поле имя является пустым.

Смежные вопросы