Mysql concate check not null

SELECT Concat(mp.cHospital ,',',mp.cHospital1,',',mp.cHospital2) as Hospital FROM TBL

Я не хочу возвращать нулевое значение,

как проверить не null или как сделать isset cond в запросе

Ответ 1

По определению (почти) любая операция с NULL приведет к NULL, поскольку NULL означает "undfined". Я интерпретирую ваш вопрос, что либо cHospital, либо cHospital1 или cHospital3 могут быть NULL, которые вы хотите проверить. Вопрос в том, что должно произойти? Вы хотите, чтобы поле было заменено пустым перемешиванием, а затем concat или все?

Я предполагаю, что первый. это может выглядеть так:

SELECT Concat(
    IFNULL(mp.cHospital, ''),
    ',',
    IFNULL(mp.cHospital1,''),
    ',',
    IFNULL(mp.cHospital2,'')) AS Hospital
FROM TBL

IFNULL возвращает первую часть, если ее NULL, где она возвращает вторую часть (пустая строка здесь).

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_ifnull

Ответ 2

Я рекомендую использовать функцию CONCAT_WS. Это работает в соответствии с тем, что вам нужно. Будет что-то вроде

SELECT CONCAT_WS(',', mp.cHospital, mp.cHospital1, mp.cHospital2) as Hospital FROM TB L

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws

Привет!!

Ответ 3

COALESCE(val1, val2, val3, ...)

вернет первое не нулевое значение, например

COALESCE(@val, '')

возвращает пустую строку, если @val имеет значение null.