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的确切名称和版本。

其他提示

一片空白 (单一替换)

或者

合并 (返回其参数中的第一个非驱逐表达。)

生成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)

取决于版本和个人喜好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top