IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 第六十六章 SQL函数 ISNULL -> 正文阅读

[大数据]第六十六章 SQL函数 ISNULL

第六十六章 SQL函数 ISNULL

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

大纲

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 FunctionComparisonTest Return Value
IFNULL(ex1,ex2) [two-argument form]ex1 = NULLTrue returns ex2 False returns NULL
IFNULL(ex1,ex2,ex3) [three-argument form]ex1 = NULLTrue returns ex2 False returns ex3
{fn IFNULL(ex1,ex2)}ex1 = NULLTrue returns ex2 False returns ex1
ISNULL(ex1,ex2)ex1 = NULLTrue returns ex2 False returns ex1
NVL(ex1,ex2)ex1 = NULLTrue returns ex2 False returns ex1
NULLIF(ex1,ex2)ex1 = ex2True returns NULL False returns ex1
COALESCE(ex1,ex2,…)ex = NULL for each argumentTrue tests next ex argument. If all ex arguments are True (NULL), returns NULL. False returns ex

示例

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

SELECT ISNULL(NULL,99) AS IsNullT,ISNULL(33,99) AS IsNullF

99	33

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

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"
}

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进行比较:

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"
}
DHC-APP>d ##class(PHA.TEST.SQLCommand).IsNull1()
Name    ColorChoice
yaoxin
xiaoli  No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫    No Preference
姚鑫
姚鑫
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:36:32  更:2022-02-28 15:38:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:45:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码