【问题】和NULL比较遇到的问题

1、问题描述:

1 select FName  from teacher
2 where FId not in(
3         select distinct FTeacherId from student
4 )

子查询返回的结果集中包含NULL,导致整条查询语句执行失败。

2、原因:

当和NULL比较(比如a=NULL、a<>NULL),返回结果总是UNKNOWN,所以整条语句执行失败。

如果把"ansi_nulls"设置为"off"(不推荐使用),那么比较结果会是TRUE或者FALSE,这样语句就能执行成功。

1 a not in(1,2,NULL)
2 相当于
3 a<>1 and a<>2 and a<>NULLa<>NULL结果为"UNKONWN",导致整条语句执行失败

3、解决方法:

加上不为空的限定

1 select distinct FTeacherId from student where FTeacherId<>NULL
时间: 2024-11-05 13:38:22

【问题】和NULL比较遇到的问题的相关文章

Spring rabbitMq 中 correlationId或CorrelationIdString 消费者获取为null的问题

问题 在用Spring boot 的 spring-boot-starter-amqp   快速启动 rabbitMq 是遇到了个坑 消费者端获取不到:correlationId或CorrelationIdString 问题产生的原因 correlationId 的在 spring rabbitmq 2.0 以后 byte方式会被放弃,所以 目前 代码中有些地方没有改过来,应该算一个BUG @SuppressWarnings("deprecation") public class De

值不能为null.参数名: viewInfo,如何解决

有蓝队网络服务器租用客户反映在一台服务器上使用数据库管理工具时弹出了如下错误 :值不能为null.参数名: viewInfo (Microsoft.SqlServer.Management.SqlStudio.Explorer 错误信息如上图: 解决方法:点击确定 登陆上去.查看---已注册的服务弹出报错信息,点详细. 会找到一个类似无法读取C:\Users\www.landui.com\AppData\Local\Temp\3\xx.tmp 的报错信息. 打开对应目录C:\Users\www.

java 的&quot;&quot;和null的区别

null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s=""; string.trim()就不会抛,为什么? 答: NULL代表声明了一个空对象,根本就不是一个字符串. ""代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串. NULL代表声明了一个空对象,对空对象做任何操作都不行的,除了=和== "

shell输出的那个垃圾桶——/dev/null

昨晚花费一整晚在知乎回答了一个关于shell里面的重定向输出到/dev/null的问题.果断今晚也同步发在这里,反正也没人看~~~~ 以下来自一个重度linux使用患者不请自来的回答. 先用简单的语言回答题主的问题: shell程序中 2> /dev/null 代表什么意思? 答:"2> /dev/null" 代表忽略掉错误提示信息. 如题 2> 代表什么意思?讲错误输出删除? 答:"2>" 代表重定向操作错误提示信息.只有这两个字符并不能删

sendUserActionEvent() mView== null after clicking on button

this is not a problem related to your code, but related to S4 android version. Same question has been posed on stackoverflow : sendUserActionEvent() is null So, just ignore it

2&gt;&1 &gt;/dev/null & 与/dev/null 2&gt;&1含义

/dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "123" > /home/123.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到

PHP如何区分未定义,null

今天遇到群里一个人提的问题,isset无法区分未定义和null怎么办? 下面是代码. <?php$b = null;$c = '';$arr = get_defined_vars(); if(!isset($a) && !array_key_exists('a', $arr)){    echo '变量未定义';}else if($a === null){    echo '变量已定义,但变量为空';}else{    echo '变量已定义且变量不为空';} echo '<b

前端面试准备2----Javascript中的Undefined和null小结

JavaScript中有两个表示“空”的值,分别是Undefined和null: (1)Undefined 定义了一个全局变量,它的值是 undefined,这个变量也被称为undefined. 但是这个变量不是一个常量,也不是一个关键字.这意味着它的值可以轻易被覆盖. ES5 提示: 在 ECMAScript 5 的严格模式下,undefined 不再是可写的了. 但是它的名称仍然可以被隐藏,比如定义一个函数名为 undefined. 下面的情况会返回 undefined 值: 访问未修改的全

在Java代码中避免 &quot;!=null &quot; 判断

这对于我来说是一个很合理常见的问题,由初级过度到中级程序员的时候经常会遇到.他们不知道也不信任正在用的约定,并且小心的检查着null.还有当他们写代码的时候,总是会依赖于通过返回空(NULL)来表明某些意义,因此需要调用者去检查Null. 换种方式来说,有两种情景空指针的检查会出现: 就约定来说是一个合理的响应 不是合理的响应 第二种很简单,可以通过用assert或者直接允许失败,例如NullPointerException.Assertions是一个从Java1.4加进来的高度未被利用的特性,

鼠标键盘无法进入:(EE) config/hal: couldn’t initialise context: (null)

vi /var/log/Xorg.0.log 发现有一行:(EE) config/hal: couldn’t initialise context: (null) 在xorg.conf里面加上下面选项,问题解决: Section "ServerFlags" Option   "AllowEmptyInput"     "false" Option   "AutoAddDevices"      "false"