2014-01-28 2 views
1

У меня есть запрос:Заполните поле с предпочитаемой строкой, если она пуста

select address from rmgr.avarii WHERE vlan =? ORDER BY id DESC LIMIT 1 

Он возвращает пустую строку или строку с адресом (accrording к ) VLAN. Я хочу изменить этот запрос, поэтому, когда он должен вернуть пустую строку, он должен вернуть «недоступно». Может кто-то помочь мне с этим?

+0

Не пустая строка, очень отличная от NULL (когда записей не найдено)? Таким образом, вы просто хотите вернуть строку, если в таблице для вашего ввода нет адреса. Правильно? – Incognito

+0

Да, нет записи с конкретным vlan. –

ответ

0

Использование IF в запросе:

select IF(address > ''),address,'not available') from ... 

address > '' Сравнение будет обрабатывать как пустые строки и NULLs.

+0

Должно ли быть, если + конец, если конструкция? Mysql возвращает ошибку после вашего запроса –

+0

Да. Эллипсис - это для вас, чтобы выполнить свой конкретный запрос. Вот полный пример, чтобы проиллюстрировать: http://sqlfiddle.com/#!2/d44af7 – mockinterface

+0

hmm, я вижу только создание таблицы и вставку. Нет выбора запроса. Я сделал это так, но это не работает: выберите IF (адрес> «", адрес, «недоступно») в качестве адреса –

1

Это должно заменить значения NULL, а также пустые строки с текстом по вашему выбору.

select coalesce(NULLIF(column_name,''), 'No Address Available') from tab; 
+0

Да, я понял. coalesce работает только с нулем –

+0

Отредактировал мой ответ, чтобы указать пустые строки, а также NULL – Incognito

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