Простой вопрос запроса Mysql

#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 ...