- Вместо
Concat()
можно использовать функцию Concat_ws()
. Он используется для объединения нескольких подстрок с заданным разделителем. Если какая-либо из подстрок Null
, она пропускается. Это поможет нам в случаях, когда любой из них null
; чтобы у нас не осталось запятых в начале / конце.
- Кроме того, вы можете использовать
Case .. When
для рассмотрения строки для объединения только при ее значении IS NOT NULL
Попробуйте вместо этого следующее:
SELECT
id,
Name,
CONCAT_WS(', ',
(CASE
WHEN ph_office IS NOT NULL THEN CONCAT('ph_office: ', ph_office)
END),
(CASE
WHEN ph_home IS NOT NULL THEN CONCAT('ph_home: ', ph_home)
END)
) AS phone
FROM contacts;
РЕДАКТИРОВАТЬ (не понял, что Гордон Линофф уже ответил, используя следующий подход):
Тем не менее, более аккуратная техника без использования Case .. When
возможна. Из функции Документы из Concat()
:
CONCAT () возвращает NULL, если любой аргумент равен NULL.
SELECT
id,
Name,
CONCAT_WS(', ',
CONCAT('ph_office: ', ph_office),
CONCAT('ph_home: ', ph_home)
) AS phone
FROM contacts;
Обратите внимание , что это будет работать, только если значение ph_office
или ph_home
равно Null
вместо пустой строки.