SQL nvl等效-不带if/case语句&;isnull&;合并
SQL中是否有与nvl()等效的函数 或者在某些场景中以相同方式使用的足够近的东西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
更新:
无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