当日期为空时,我想显示"N/A",但如果日期不为空,我想以dB显示日期。这就是我目前拥有的,我在 THEN/ELSE 表达式中得到数据类型不匹配。我假设这是因为我试图在日期字段中显示一个字符。
SELECT
CASE WHEN created_at IS NULL
THEN 'N/A'
ELSE created_at
END AS created_at
FROM example.example_id
这可能吗?
不能混合数据类型。
SELECT COALESCE(CAST(created_at AS VARCHAR(100)),'NA') AS created_at
FROM example.example_id
或者,如果您只关心演示,则可以调整用户首选项。 例如.SQL助手 ->选项 -> 数据格式 -> 然后将"为空数据值显示此字符串"设置为"NA"。
您也可以使用 COALESCE 代替 CASE,但您仍然需要先将日期转换为字符串:
Coalesce(To_Char(created_at, 'yyyy-mm-dd'), 'N/A')
你的假设是正确的:你不能将日期(时间)数据类型与 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
此处的转换可能需要一些调整,具体取决于您希望它的显示方式。
简单地你可以试试
SELECT CAST(VARCHAR, ISNULL(Created_at, 'N/A')) As 'Created_at'
FROM example.example_id