我正在玩sqlplus命令提示符,我想显示一个默认字符串,让所有NULL列的'ITISNULL'没有更新它们。 select * from注册其中...SQL:NULL列的输出默认字符串
注册表是一个可能在其lgrade列中包含空值的表。我不想更新它,但只是想要一个输出字符串说,“被分级”在其位置打印。
是否有我可以使用的任何SQL函数?
我正在玩sqlplus命令提示符,我想显示一个默认字符串,让所有NULL列的'ITISNULL'没有更新它们。 select * from注册其中...SQL:NULL列的输出默认字符串
注册表是一个可能在其lgrade列中包含空值的表。我不想更新它,但只是想要一个输出字符串说,“被分级”在其位置打印。
是否有我可以使用的任何SQL函数?
有几种方法可以做到这一点。一种选择是使用COALESCE
:
SELECT COALSECE(lgrade, 'to be graded')...
不能指定*所有字段,你就必须相应地指定每个列名。
NVL是你的答案,你需要为可能的空值每列做值
在SQL * Plus可以使用:
SQL> SET NULL 'ITISNULL'
SQL> SELECT ...
所有NULL
结果将显示为ITISNULL
。唯一的问题是宽度小于8(长度为ITISNULL
)的列可能会换行 - 至少它们会在我旧版本的SQL * Plus(9.2)中执行。
要返回SQL * Plus将其默认情况下,发出以下命令:
SQL> SET NULL ''
有很多的方式来表达一个字符串时,该列是空的。如上所述,一些方法: -
只要col1的值为null,就使用NVL来显示'itisnull'。
select nvl(col1, 'itisnull') from tableName;
每当col1的值为null时,使用CASE显示'itisnull'。
select
case when col1 is null then
'itisnull'
else col1
end colum from tableName;
另一种伟大的方式来做到这一点。从来没有尝试过测试它,但我不知道是否比另一个更快(很可能不是) – Limey 2013-04-08 18:44:18
@Limey - 这是一篇关于差异的好文章:http://stackoverflow.com/questions/950084/oracle-differences- between-nvl-and-coalesce – sgeddes 2013-04-08 18:50:42
谢谢sgeddes!有效!!! – 2013-04-08 19:04:48