SQL NVL等效 - 无需/案例声明和Isnull&Coalesce
题
SQL中是否有NVL()等效函数?
还是在某些情况下以相同方式使用足够接近的东西?
更新:
否if语句
没有案例语句
没有isnull
没有结合
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
解决方案
您似乎正在使用Informix。
Afaik,那里有解码:
DECODE(field, NULL, 'it is null, man', field)
应该给你与 NVL(field, 'it is null, man')
请发布您使用的RDBMS的确切名称和版本。
其他提示
SQL Server:Isnull或CoaleScehttp://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/blocks/blocks162.htm
Postgres:我找不到一个没有完全检查的。建议选择零位置并从这里构建的位置http://archives.postgresql.org/pgsql-sql/1998-06/msg00142.php
生成800错误的解码语句的问题很简单。 '01/01/2009'
被视为字符串,实际上是生成错误的第四个参数。
感谢解码语句的输入和输出可能是不同的数据类型,因此在这种情况下,引擎要求您更加明确。 (你想要 purge_date
施放为字符串或字符串 '01/01/2009'
, ,还是字符串参数解析为日期或原始日期?引擎无法知道。
尝试这个:
SELECT DECODE(purge_date, NULL, '01/01/2009'::DATE, purge_date)
您也可以将第三参数写为:
DATE('01/01/2009')
MDY(1,1,2009)
取决于版本和个人喜好。
不隶属于 StackOverflow