SQL можно отображать (только отображать) строку без даты в столбце даты? - PullRequest
0 голосов
/ 27 апреля 2011

Я задавался вопросом, возможно ли показывать "-", когда в столбце даты нет ?

Так что одним кортежем может быть {Дейв, 13 июля 2011 г.}, тогда какдругой может быть {Джон, -}

РЕДАКТИРОВАТЬ: Спасибо человеку ниже, который предложил это:

SELECT `ID`, COALESCE(CAST(`Graduation Date` AS CHAR), '-') FROM <table>

Это сработало!

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

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

SELECT name, COALESCE(date, '-')
FROM table

РЕДАКТИРОВАТЬ: Не понимаю, как это возможно, что он не работает.Пример:

SELECT COALESCE('2011-01-01', '-') //returns '2011-01-01'
SELECT COALESCE('', '-') //returns ''
SELECT COALESCE(NULL, '-') //returns '-'

Попробуйте 3 утверждения, и вы увидите, что возвращается.

EDIT2:

SELECT name, IF(COALESCE(date, '-') = '', '-', date)
FROM table
1 голос
/ 27 апреля 2011

Если ваш столбец дат содержит некоторые специальные даты, которые вы хотели бы обрабатывать так же, как и значения NULL (например, 0000-00-00), вы можете попробовать этот метод:

SELECT COALESCE(NULLIF(yourdatecolumn, '0000-00-00'), '-')

Это, по сути, просто более короткий способ написать это:

SELECT CASE
         WHEN yourdatecolumn IS NULL OR yourdatecolumn = '0000-00-00' THEN '-'
         ELSE yourdatecolumn
       END
0 голосов
/ 27 апреля 2011
SELECT ID, IF(GRADUATIONDATE IS NULL, '-', GRADUATIONDATE) FROM TABLE

or 

SELECT ID, IFNULL(GRADUATIONDATE,'-') FROM TABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...