今天有一条sql需要某两个字段不能为空,当然是不能为null也不能为空字符串啦。

  然后就开始写

 WHERE
(
order_amount != null
and order_amount != ''
and received_amount != null
and received_amount != ''
)

  查询结果,一条也没有!

  网上搜索才发现:

  在SQL中逻辑表达式的可能值包括TRUE、FALSE和UNKNOWN,它们被称之为三值逻辑。

  在其它的语言中,逻辑表达式只有两种,要么是true,要么就是false。而sql中却存在第三个逻辑表达式UnKnown,这个是sql中特有的。从字面意思上我们可以解理该值的意思是:什么都不知道,就是什么都不是。一般情况下我们将任何值(包括NULL本身)与NULL做比较的时候,都会返回UnKnown。而在查询表达式中(比如where与having中),UnKnown会视为false。所以我们就明白了为什么select * from 表 where 字段=null查不到正确的结果的原因了。

  但并不是在所有场情下UnKnown都会视为false来处理,在check约束中,UnKnown就会视为true来处理。这就是为什么我们设置某个字段的值必须大于等于0的情况下,我们还可以往该字段中插入Null值,那是因为在check约束中null>=0的逻辑结果UnKnown会被当作true来处理。

  所以判断null值请用 is not

 WHERE
(
order_amount is not null
and order_amount != ''
and received_amount is not null
and received_amount != ''
)

  sql竟然还有这么个规则,不同语言之间的差距也太大了,每种语言都有自己个性化的东西。为什么程序员难做,因为每种语言都不同,而做一个项目往往要用到几种语言,而且语言也在发展。希望日后能有一种语言适用于所有场景:数据库、后台、前端......

SQL条件!=null查不出数据的更多相关文章

  1. java程序查不出数据来

    同样的错误,不可再犯第三次!!! 数据库中是char,里面带空格,但在pl/sql中这样写可以查出来.如下: select ipostid from product t where ipostid= ...

  2. oracle向in语句传入参数查不出数据

    在oracle字符串中使用了in,但是查不出数据 string getModel = "select * from TB_YBSH where ID in :ids"; Oracl ...

  3. MyBatis模糊查询不报错但查不出数据的一种解决方案

    今天在用MyBatis写一个模糊查询的时候,程序没有报错,但查不出来数据,随即做了一个测试,部分代码如下: @Test public void findByNameTest() throws IOEx ...

  4. DataGrid 查不出数据 注意事项

    总结以下几条:1.SQL文在数据控中查询成功在写入,表内字段名尽量复制,手打太容易错了.写SQL写错了,没有智能提示.2.DataGrid数据源先绑定.3.检查parameter顺序,条件的顺序也要考 ...

  5. SubSonic3.0使用外连接查询时查询不出数据的问题修改

    今天在开发时,要使用到外连接查询,如图 老是查不出数据,所以就追踪了一下代码,发现查询后生成的SQL语句变成了内连接了,真是晕 然后继续Debug,发现原来SqlQuery类在调用LeftInnerJ ...

  6. Mybatis 查不到数据,总是返回Null

    mybatis突然查不到数据,查询返回的都是Null,但是 select count(*) from xxx查询数量,返回却是正常的. Preparing: SELECT id,a9004,a9005 ...

  7. (转)解决mybatis的mapper.xml查询不出数据,结果一直为null问题

    背景:记录mybatis使用过程中遇到的相关问题. 解决mybatis的mapper.xml查询不出数据,结果一直为null问题 解决方案: 1 修改实体类与数据库字段名相同 2 修改sql查询语句, ...

  8. 【HANA系列】SAP HANA SQL条件判断是NULL的写法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL条件判断 ...

  9. SQL Server数据库Union和Union All查询出数据的区别?

    好久没有更新博客了,可能是最近比较忙,总是忽略了一些事情,今天查了做了一些数据分析的数据,突然感觉对Union和Union all有些不太理解了,可能是自己老了吧,就翻了一些资料,进行回忆和学习,趁着 ...

随机推荐

  1. oracle修改用户密码

    1.使用oracle用户登录,连接数据库 [oracle@wuzj ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Th ...

  2. python基础之3

    1,列表可以嵌套任何东西.包括字典,列表等 字典是无序的健值型,不需要下标,也可以嵌套列表和字典 2,集合:对列表进行差异化处理后形成集合,特点:去重和无序.主要作用: (1)去重;(2) 关系测试, ...

  3. PHP 预定义超全局数组/变量

    1.超全局变量:不用定义声明即可用.PHP有九种 2.$_GET:通过参数传递给当前脚本的变量的数组 浏览器页面-->(http协议)->apache-->php module--& ...

  4. 巨蟒python全栈开发flask15项目开始7

    1.连续收取未读消息&&未读消息所属人 2.Pypinyin NLP中文同音字识别 3.jieba分词 4.Gemsim框架之LsiModel稀疏矩阵相似度 5.Gensim的应用 6 ...

  5. 如何让ios启动画面停留更长时间

    几种方法: 方法1:在AppDelegate.m里写上 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithO ...

  6. 每天一個Linux指令- chmod指令

    拷貝來源: 01.http://www.cnblogs.com/peida/archive/2012/12/05/2803591.html 02.http://www.cnblogs.com/peid ...

  7. 前端开发 - JQuery - 下

    二十五.jquery的事件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  8. 剑指Offer——左旋转字符串

    题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”ab ...

  9. Jenkins部分常用插件

  10. iOS开发- 速学Swift-中文概述

    Swift是什么? Swift是苹果于WWDC 2014公布的编程语言,这里引用The Swift Programming Language的原话: Swift is a new programmin ...