Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL nvl等效-不带if/case语句&;isnull&;合并_Sql_Syntax_Informix_Null - Fatal编程技术网

SQL nvl等效-不带if/case语句&;isnull&;合并

SQL nvl等效-不带if/case语句&;isnull&;合并,sql,syntax,informix,null,Sql,Syntax,Informix,Null,SQL中是否有与nvl()等效的函数 或者在某些场景中以相同方式使用的足够近的东西 更新: 无if语句无case语句无isnull无合并 select nvl (purge_date,"SODIUFOSDIUFSDOIFUDSF") from id_rec where id=36581; (expression) SODIUFOSDIUFSDOIFUDSF 1 row(s) retrieved. select isnull (purge_date,"SODIUFOSDIUFSDOIF

SQL中是否有与nvl()等效的函数

或者在某些场景中以相同方式使用的足够近的东西


更新:
无if语句
无case语句
无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

好了,这里有解码:

DECODE(field,NULL,'it is NULL,man',field)
应该给您提供与
NVL(field,'it is NULL,man')相同的结果。


请发布您正在使用的RDBMS的确切名称和版本。

您似乎正在使用Informix

好了,这里有解码:

DECODE(field,NULL,'it is NULL,man',field)
应该给您提供与
NVL(field,'it is NULL,man')相同的结果。

请公布您正在使用的RDBMS的确切名称和版本。

SQL Server: IsNull或合并

Sybase: isnull函数

博士后: 我找不到一个,虽然我还没有完全检查过。建议选择where为NULL并从此处构建

DB2-COALESCE SQL Server: IsNull或合并

Sybase: isnull函数

博士后: 我找不到一个,虽然我还没有完全检查过。建议选择where为NULL并从此处构建

DB2-COALESCE

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

取决于版本和个人偏好。

生成800错误的解码语句的问题很简单。
'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)

取决于版本和个人偏好。

您使用的确切版本会很有帮助。此外,如果nvl有效,为什么不使用它?我不知道如何找出我使用的是哪个版本。它的informix和它的旧版本…对于一个场景,nvl不起作用,我不知道nvl导致问题的场景是什么?在其中一个场景中有一个字段y个为“null”(“或”)的表它应该是某个人的名字。我们为一般用途设置了一个密钥,但从未输入名称。它最终击中了风扇,我不得不修复它,但NVL没有这样做,我必须用一堆BSL来解决它。别忘了,与其他一些系统不同,Informix不会将空字符串视为NULL-两者是不同的带有“-V”选项的mix程序应该会打印一些版本信息。您选择的程序的名称可能也会有所帮助。您使用的确切版本会有所帮助。此外,如果nvl有效,为什么不使用它?我不确定如何找出我使用的版本。它的informix和它的旧版本…对于一个场景,nvl不起作用,我不知道为什么NVL导致问题的场景?我的一个表中有一个字段为“null”(“或”)它应该是某个人的名字。我们为一般用途设置了一个密钥,但从未输入名称。它最终击中了风扇,我不得不修复它,但NVL没有这样做,我必须用一堆BSL来解决它。别忘了,与其他一些系统不同,Informix不会将空字符串视为NULL-两者是不同的带有“-V”选项的mix程序应该打印一些版本信息。您选择的程序的名称可能也会有帮助。是的,旧的informix..不知道是什么版本…我从语法select decode(purge_date,NULL,“01/01/2009”,purge_date)中得到这个错误from id_rec,其中id=74115;800:大小写表达式中的对应类型必须兼容。字符位置57附近的第1行中的错误解码工作正常,但您试图给出的日期是一个字符串,或者使用隐式转换,我猜是从
日期时间年到秒
或任何默认值。因此使用
DECODE(purge\u date,NULL,EXTEND('01/01/2009',year to day),purge\u date)从id\u rec
转换为
purge\u date
的格式。(刚才注意到,在@RET的回答中下面有相同的解释)是的,旧的informix..不知道是什么版本…我从语法选择DECODE(purge\u date,NULL,“01/01/2009”,purge\u date)得到这个错误from id_rec,其中id=74115;800:大小写表达式中的对应类型必须兼容。字符位置57附近的第1行中的错误解码工作正常,但您试图给出的日期是一个字符串,或者使用隐式转换,我猜是从
日期时间年到秒
或任何默认值。因此使用
解码(purge_date,NULL,EXTEND('01/01/2009',year to day),purge_date)从id_rec
转换为
purge_date
的格式。(刚才注意到,@RET的答案下面有相同的解释)我正在使用Sybase 12.5。DECODE和NVL都不可用,但ISNULL工作得很好。我正在使用Sybase 12