SELECT Concat(mp.cHospital ,',',mp.cHospital1,',',mp.cHospital2) as Hospital FROM TBL
Я не хочу возвращать нулевое значение,
как проверить не null или как сделать isset cond в запросе
SELECT Concat(mp.cHospital ,',',mp.cHospital1,',',mp.cHospital2) as Hospital FROM TBL
Я не хочу возвращать нулевое значение,
как проверить не null или как сделать isset cond в запросе
По определению (почти) любая операция с 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
Я рекомендую использовать функцию 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
Привет!!
COALESCE(val1, val2, val3, ...)
вернет первое не нулевое значение, например
COALESCE(@val, '')
возвращает пустую строку, если @val
имеет значение null.
Вы можете использовать условие case
для этого http://dev.mysql.com/doc/refman/5.0/en/case-statement.html