Как задать значение по умолчанию для столбца в таблице, если в нем нет данных? - PullRequest
0 голосов
/ 05 декабря 2018

Например: у нас есть таблица Person со столбцами Name, Age.

Если таблица Person пуста, я хочу иметь значение по умолчанию в виде "no person" в столбце Name и0 в age столбце.

Как нам это сделать?

Я пытался IFNULL, но он не дает никакого значения по умолчанию.Таблица отображается только пустой.

Ответы [ 4 ]

0 голосов
/ 05 декабря 2018

Вы бы не делали этого в базе данных, вы делали бы это во внешнем интерфейсе.

Если вы абсолютно настаиваете, чтобы БД предоставляла эти данные, то один из возможных запросов будет выглядеть следующим образом:

SELECT Name, Age FROM Person
UNION ALL
SELECT 'No person', 0 FROM dual a WHERE NOT EXISTS (SELECT 1 FROM Person)

Все эти парни, предлагающие COALESCE или IFNULL, похоже, упустили из виду тот факт, что строк вообще нет.В приведенном выше запросе нижний запрос (все после UNION ALL) представляет собой запрос, который выдает одну строку, если в Person нет записей

0 голосов
/ 05 декабря 2018

Используйте объединение с запросом, который проверяет количество строк в таблице:

SELECT name, age
FROM Persons
UNION ALL
SELECT 'no person', 0
FROM DUAL
WHERE (SELECT COUNT(*) FROM Persons) = 0

DUAL - это фиктивное имя таблицы, которое можно использовать в запросах, к которым не нужно обращатьсянастоящий стол.

0 голосов
/ 05 декабря 2018

Зачем вам нужен такой вывод из базы данных?Я думаю, вы должны делать это на языке, который вы используете для обработки данных, которые предоставляет вам Запрос.Я думаю, что предложенные решения неверны, потому что они дают пустой набор, если таблица пуста

0 голосов
/ 05 декабря 2018

использование COALESCE

select case when name<>''
then COALESCE (name,'No name') else 'No name' end,
 COALESCE (age,0) from Person 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...