#mysql
#mysql
Вопрос:
Я выписал этот запрос Mysql, но вернул много пустых полей для customers_telephone
таблицы, поскольку это поле никогда не было обязательным. Я хотел бы вернуть некоторые фиктивные данные в моем запросе (без вставки их в базу данных), если поле равно нулю. Я знаю, что MySQL использует предложения if, но я думаю, что это только для создания баз данных или …?
вот мой штамп
SELECT orders.orders_id AS recipient_id, delivery_company, delivery_street_address, delivery_city, delivery_postcode, delivery_state, delivery_country, customers_telephone
FROM orders, orders_products
WHERE orders.orders_id = orders_products.orders_id
AND products_id = 416
ORDER BY `orders`.`orders_id` DESC
Обновить
Я пытался это сделать, но он все еще не работает, может быть, я сделал это не в том месте?
SELECT orders.orders_id AS recipient_id, delivery_company, delivery_street_address, delivery_city, delivery_postcode, delivery_state, delivery_country, IFNULL(customers_telephone, 'no number') AS customers_number
FROM orders, orders_products
WHERE orders.orders_id = orders_products.orders_id
AND products_id = 416
ORDER BY `orders`.`orders_id` DESC
ВОЗВРАТ
recipient_id delivery_company delivery_street_address delivery_city delivery_postcode delivery_state delivery_country number
191743 This Chick Bakes 31-31 48th Ave #B Long Island City 11101 NY United States 917.848.6437
191724 44 Miraflores Ave (studio) San Rafael 94901 CA United States
191723 397 South River Street Wilkes-Barre 18702 PA United States
Ответ №1:
Используйте IFNULL
функцию для предоставления значения, если поле равно NULL:
IFNULL(customers_telephone, 'dummydata') AS customers_telephone
IFNULL
является нестандартным расширением MySQL. Стандартный способ — использовать COALESCE
функцию для этой цели. COALESCE
также поддерживается MySQL, но он немного медленнее, чем IFNULL
, хотя, вероятно, здесь это не имеет значения.
Комментарии:
1. @ehime: Возможно, это пустые строки или строки, содержащие только пробелы или другие невидимые символы.
2. Похоже, что это пробел, каковы мои варианты?
3.
IFNULL(NULLIF(TRIM(customers_telephone), ''), 'dummydata')
Ответ №2:
Один из способов
SELECT COALESCE(customers_telephone, 'no number') FROM ...