SQL中是否有任何与nvl()等效的函数?
或者在某些情况下足够接近以相同方式使用的东西?
<小时/> 更新:
select nvl (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
(expression)
SODIUFOSDIUFSDOIFUDSF
1 row(s) retrieved.
select isnull (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
674: Routine (isnull) can not be resolved.
Error in line 1
Near character position 8
select coalesce (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581;
674: Routine (coalesce) can not be resolved.
Error in line 1
Near character position 8
select decode(purge_date, NULL, "01/01/2009", purge_date) from id_rec where id=74115;
800: Corresponding types must be compatible in CASE expression.
Error in line 1
Near character position 57
答案 0 :(得分:5)
答案 1 :(得分:3)
SQL Server: IsNull或COALESCE http://msdn.microsoft.com/en-us/library/ms184325.aspx
的Sybase: isnull功能 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks162.htm
Postgres的: 虽然没有完全检查,但我找不到一个。建议从这里选择IS NULL和构建的位置 http://archives.postgresql.org/pgsql-sql/1998-06/msg00142.php
DB2 - COALESCE http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0000780.htm
答案 2 :(得分:2)
您似乎正在使用Informix。
AFAIK,那里有DECODE:
DECODE(field, NULL, 'it is null, man', field)
应该与NVL(field, 'it is null, man')
请发布您正在使用的RDBMS的确切名称和版本。
答案 3 :(得分:2)
生成800错误的DECODE语句的问题很简单。 '01/01/2009'
被视为一个字符串,它实际上是产生错误的第四个参数。
感谢DECODE语句的输入和输出可以是不同的数据类型,因此引擎要求您在这种情况下更明确。 (您希望purge_date
强制转换为字符串或字符串'01/01/2009'
,还是将字符串参数解析为日期或原始日期?引擎无法知道。
试试这个:
SELECT DECODE(purge_date, NULL, '01/01/2009'::DATE, purge_date)
您也可以将第三个参数写为:
DATE('01/01/2009')
MDY(1,1,2009)
取决于版本和个人偏好。