前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL函数 ISNULL

SQL函数 ISNULL

作者头像
用户7741497
发布2022-04-06 14:25:02
6380
发布2022-04-06 14:25:02
举报
文章被收录于专栏:hml_知识记录

SQL函数 ISNULL

测试NULL并返回相应表达式的函数。

大纲

代码语言:javascript
复制
ISNULL(check-expression,replace-expression)

参数

  • check-expression - 要计算的表达式。
  • replace-expression - Check-ExpressionNULL时返回的表达式。

ISNULL返回与Check-Expression相同的数据类型。

描述

ISNULL计算check-expression并返回以下两个值之一:

  • 如果check-expressionNULL,则返回Replace-Expression
  • 如果Check-Expression不为空,则返回Check-Expression

Replace-Expression的数据类型应该与Check-Expression的数据类型兼容。

请注意,ISNULL函数与NVL函数相同,后者是为了与Oracle兼容而提供的。

日期和时间显示转换

某些检查表达式数据类型需要从逻辑模式转换为ODBC模式或显示模式。例如日期和时间数据类型。如果替换表达式值不是相同的数据类型,则不能在ODBC模式或显示模式下转换此值,并生成SQLCODE错误:日期数据类型为-146;时间数据类型为-147。例如,ISNULL(DOB,'nodate')不能在ODBC模式或显示模式下执行;它会发出SQLCODE-146错误,并显示 %msg Error: 'nodate' is an invalid ODBC/JDBC Date value or Error: 'nodate' is an invalid DISPLAY Date value。要在ODBC模式或显示模式下执行此语句,必须将值强制转换为适当的数据类型:ISNULL(DOB,CAST('nodate' as DATE))。这将导致日期0,显示为1840-12-31

比较的NULL处理函数

下表显示了各种SQL比较函数。如果逻辑比较测试为True(A与B相同),则每个函数返回一个值;如果逻辑比较测试为False(A与B不同),则每个函数返回另一个值。这些函数允许您执行空逻辑比较。不能在实际相等(或不相等)条件比较中指定NULL

SQL Function

Comparison

Test Return Value

IFNULL(ex1,ex2) [two-argument form]

ex1 = NULL

True returns ex2 False returns NULL

IFNULL(ex1,ex2,ex3) [three-argument form]

ex1 = NULL

True returns ex2 False returns ex3

{fn IFNULL(ex1,ex2)}

ex1 = NULL

True returns ex2 False returns ex1

ISNULL(ex1,ex2)

ex1 = NULL

True returns ex2 False returns ex1

NVL(ex1,ex2)

ex1 = NULL

True returns ex2 False returns ex1

NULLIF(ex1,ex2)

ex1 = ex2

True returns NULL False returns ex1

COALESCE(ex1,ex2,...)

ex = NULL for each argument

True tests next ex argument. If all ex arguments are True (NULL), returns NULL. False returns ex

示例

在下面的示例中,第一个ISNULL返回第二个表达式(99),因为第一个表达式为空。第二个ISNULL返回第一个表达式(33),因为第一个表达式不为空:

代码语言:javascript
复制
SELECT ISNULL(NULL,99) AS IsNullT,ISNULL(33,99) AS IsNullF

99  33

如果FavoriteColorsNULL,下面的动态SQL示例将返回字符串‘No Preference’;否则,它将返回FavoriteColors的值:

代码语言:javascript
复制
ClassMethod IsNull()
{
    s myquery=3
    s myquery(1)="SELECT Name,"
    s myquery(2)="ISNULL(FavoriteColors,'No Preference') AS ColorChoice "
    s myquery(3)="FROM Sample.Person"
    s tStatement = ##class(%SQL.Statement).%New()
    s qStatus = tStatement.%Prepare(.myquery)
    s rset = tStatement.%Execute()
    d rset.%Display()
    w !,"End of data"
}
代码语言:javascript
复制
DHC-APP> d ##class(PHA.TEST.SQLCommand).IsNull()
Name    ColorChoice
yaoxin  $lb("Red","Orange","Yellow")
xiaoli  No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫    $lb("Red","Orange","Yellow","Green")
姚鑫    $lb("Red","Orange","Yellow","Green","Green")

ISNULL的行为与IFNULL进行比较:

代码语言:javascript
复制
ClassMethod IsNull1()
{
    s myquery=3
    s myquery(1)="SELECT Name,"
    s myquery(2)="IFNULL(FavoriteColors,'No Preference') AS ColorChoice "
    s myquery(3)="FROM Sample.Person"
    s tStatement = ##class(%SQL.Statement).%New()
    s qStatus = tStatement.%Prepare(.myquery)
    s rset = tStatement.%Execute()
    d rset.%Display()
    w !,"End of data"
}
代码语言:javascript
复制
DHC-APP>d ##class(PHA.TEST.SQLCommand).IsNull1()
Name    ColorChoice
yaoxin
xiaoli  No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫
姚鑫

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SQL函数 ISNULL
  • 大纲
  • 参数
  • 描述
  • 日期和时间显示转换
  • 比较的NULL处理函数
  • 示例
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档