如何在 SQL 中将 null(数字)替换为“未知”(字符)?
Posted
技术标签:
【中文标题】如何在 SQL 中将 null(数字)替换为“未知”(字符)?【英文标题】:how to replace null (number) to 'unknown' (char) in SQL? 【发布时间】:2020-10-03 09:14:38 【问题描述】:如何在 SQL 中将 Grade1 中的所有空值替换为“未知”? 这不起作用,因为 Grade1 是数字,但“未知”是字符。
SELECT NVL(Grade1, 'Unknown')
FROM table;
[表格]
Student Grade1 Grade2
1 NULL 0.88
2 0.80 0.50
3 NULL 0.40
【问题讨论】:
由于您使用的是nvl
,我假设您使用的是Oracle而不是其他一些关系数据库。
【参考方案1】:
你不能随心所欲。 NVL()
的两个分支必须返回相同的数据类型。如果您真的想要 NULL
值的“未知”,那么您还必须将非 NULL
值转换为字符串。
假设您正在运行 Oracle,正如 NVL()
建议的那样:
NVL(TO_CHAR(grade1), 'Unknown')
也就是说,我宁愿保持 NULL
的值不变。这似乎是表示数据缺失的正确方式(NULL
真正代表“未知”)。
【讨论】:
【参考方案2】:假设您的意图是让结果中的Grade1
列成为varchar2
coalesce( to_char( Grade1 ), 'Unknown' )
您可以使用nvl
而不是coalesce
,但coalese
更灵活(它可以接受两个以上的参数)并且更易于跨不同数据库移植。
【讨论】:
【参考方案3】:你可以试试这个:
SELECT DECODE(Grade1, null, 'UnKnown', Grade1) FROM tbl;
【讨论】:
以上是关于如何在 SQL 中将 null(数字)替换为“未知”(字符)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 hive 中将列的空白值替换为 [null] 以计算 SUM