当日期为NULL时,我想显示“N / A”,但如果日期不为空,我想以dB显示日期。这就是我目前所拥有的,我在THEN / ELSE表达式中得到了一个DataType Mismatch。我假设这是因为我试图在日期字段中显示一个字符。
SELECT
CASE WHEN created_at IS NULL
THEN 'N/A'
ELSE created_at
END AS created_at
FROM example.example_id
这可能吗?
答案 0 :(得分:1)
您无法混合数据类型。
SELECT COALESCE(CAST(created_at AS VARCHAR(100)),'NA') AS created_at
FROM example.example_id
或者,如果您只关心演示文稿,则可以调整用户首选项。恩。 SQL助手 - >选项 - >数据格式 - >然后设置'显示此字符串以获取空数据值' as' NA'。
答案 1 :(得分:1)
您可以使用COALESCE代替CASE,但您仍需要先将日期转换为字符串:
Coalesce(To_Char(created_at, 'yyyy-mm-dd'), 'N/A')
答案 2 :(得分:0)
您的假设是正确的:您不能将日期(时间)数据类型与varchar数据类型混合。解决方案是将日期转换为varchar:
SELECT CASE WHEN created_at IS NULL THEN 'N/A'
ELSE CAST (created_at as char(8) format 'YYYYMMDD')
END AS created_at
FROM example.example_id
此处的转换可能需要进行一些调整,具体取决于您希望如何显示。
答案 3 :(得分:0)
只需你可以尝试
SELECT CAST(VARCHAR, ISNULL(Created_at, 'N/A')) As 'Created_at'
FROM example.example_id