#mysql #sql
#mysql #sql
Вопрос:
Этот запрос вернет пустой (не нулевой, а именно пустой, как неопределенный) результат
SELECT value
FROM table t1
WHERE t1.id = 215
AND t1.property_id = 2
Этот запрос также вернет тот же результат.
SELECT
IF( ISNULL(value) OR ISEMPTY(value) OR value = '', 0, 1 ) AS value
FROM table t1
WHERE t1.id = 215
AND t1.property_id = 2
Как я могу вместо пустого вместо пустого значения вставить некоторое значение в результат?
Очень важно использовать только собственные инструменты mysql (5.6).
Комментарии:
1. Можете ли вы добавить макет результата, который вы получаете при первом запросе, и каким будет ожидаемый результат. Нам будет понятнее, что вы имеете в виду.
Ответ №1:
Если вы ищете только один результат, вы можете использовать агрегацию:
SELECT COALESCE(MAX(value), ?)
FROM table t1
WHERE t1.id = 215 AND t1.property_id = 2
Это ?
заполнитель для нужного вам значения.
Ответ №2:
Решение 1: Вы можете использовать case с условием, обновите Your_value, как вы хотите
select CASE WHEN value IS NULL THEN 'Your_value' ELSE value END AS u_value
FROM
table t1
WHERE t1.id = 215
AND t1.property_id = 2;
Это даст результат извлечения, который вы хотите.
Решение 2. Вы также можете использовать функцию MySQL COALESCE(), которая возвращает первое ненулевое значение списка или NULL, если нет ненулевых значений.
SELECT coalesce(NULLIF(value, ''), 'Your_value')
FROM
table t1
WHERE t1.id = 215
AND t1.property_id = 2