`
iihero
  • 浏览: 257699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

也来说说SQL语句中NULL的真实含义

阅读更多

NULL,表示不明确、未知的列值

测试表:testnull(id varchar(32))

数据库:Sybase ASA11.0

行数据(''), (NULL)

数据库选项ansinull为true(也是ASA数据库的默认选项)时,

select * from testnull where id = null

select * from testnull where id != null

结果均为空

select * from testnull where idis null

结果为(NULL)

select * from testnull where idis notnull

结果为('')

当ansinull为false时,

select * from testnull where id = null

结果为(NULL)

select * from testnull where id != null

结果为('')

从上述结果来看,NULL值确实是一个有争议的东西,但是,毫无疑问,ansinull对NULL的定义是精确的,即不能对NULL值进行等于或不等判断,无论是等还是不等,其结果都为false.

而统一的is null, is not null的含义则显然是明确的,NULL is null恒为真,非NULL is null恒为假。

再看看在Oracle中的结果:

SQL> select * from testnull where id is null;

ID
--------------------------------

SQL> select * from testnull where id is not null;

no rows selected

SQL> select * from testnull where id=null;

no rows selected

SQL> select * from testnull where id != null;

no rows selected

空字符串''在oracle中被示为NULL值了。比较怪异。

Oracle这种现象的重现过程如下:

SQL> create table testnull(id varchar(32));

Table created.

SQL> insert into testnull values('');

1 row created.

SQL> select * from testnull where id is null;

ID
----------------------------------------------------------------


SQL> select count(*) from testnull where id is null;

COUNT(*)
----------
1

SQL>

分享到:
评论

相关推荐

    PB脚本中SQL语句写法与SQL中语句写法对照

    PB脚本中SQL语句写法与SQL中语句写法对照 PB脚本中SQL语句写法与SQL中语句写法对照是非常重要的知识点,因为PB脚本和SQL语言在写法和应用中有所不同。本文将对PB脚本中SQL语句写法和SQL中语句写法进行对比和分析。 ...

    hibernate执行原生sql语句

    "hibernate执行原生sql语句" Hibernate 是一种流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在一些情况下,我们需要直接执行原生 SQL 语句,而不是使用 Hibernate 的...

    SQL语句教程 写法大全

    SQL 高级知识,如 Top 语句、Like 语句、通配符、In 语句、Between 语句、Aliases 语句、Join 语句、Inner Join 语句、Left Join 语句、Right Join 语句、Full Join 语句、Union 语句、Select Into 语句、Create DB ...

    Mybatis执行SQL语句的方式

    在上面的代码中,我们定义了一个 UserMapper 接口,该接口中有一个 selectUser 方法,该方法使用@Select 注解来定义一个 SQL 语句,该 SQL 语句用于从 table01 表中根据 id 字段查询用户信息。 通过 XML 配置文件...

    vc++SQL语句嵌套

    在编程领域,尤其是在数据库操作中,SQL语句的嵌套是一项重要的技能。SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准语言,而嵌套SQL语句则是指在一个SQL语句内部嵌入另一个或多个SQL...

    oracle 查看当前会话执行的sql语句

    在Oracle数据库管理中,有时我们需要了解某个特定会话(Session)正在执行哪些SQL语句。这在性能调优、问题诊断等场景下尤为重要。以下将详细介绍如何通过不同的方法来查看当前会话所执行的SQL语句及相关信息。 ###...

    Access中的SQL语句.doc

    Access 数据库是 Microsoft Office 软件套件中的一个数据库管理系统,支持 SQL 语句来管理和查询数据。下面是 Access 中的 SQL 语句知识点总结: 1. 查询所有记录:使用 Select * 语句可以查询所有记录,该语句通常...

    sql 语句中的 NULL值

    SQL 语句中的 NULL 值是一个非常重要的概念,对于 SQL 开发者来说,是必须掌握的知识点。在 SQL 语句中,NULL 值表示不知道或缺失的值,例如,一个员工的薪水可能是 NULL,因为我们不知道他的薪水是多少。今天,我们...

    根据word文档生成SQL语句(SQLServer) 及 实体类

    在日常工作中,我们经常需要根据业务需求创建对应的数据库结构,这通常涉及到编写SQL语句来定义表的结构。在大型项目中,这种工作量可能会非常大,因此,自动化工具的使用可以显著提高效率。本主题将深入探讨如何...

    iBatis的动态SQL语句

    iBatis框架中的动态SQL主要通过XML映射文件来实现,它允许在映射文件中使用各种标签来控制SQL语句的生成过程。这些标签包括但不限于`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<trim>`、`<where>`、`<set>`、`...

    SQL基本语句 SQL基本语句

    了解并熟练掌握这些基本的SQL语句是数据库管理的基础,也是成为有效数据操作者的关键。随着进一步的学习,你可以探索更多高级的SQL特性,如存储过程、触发器和视图,以提升数据库管理和分析的能力。

    SQL语句拼接

    在实际开发过程中,为了实现动态SQL查询的功能,开发者常常需要根据不同的条件来构造SQL语句。这种根据条件动态生成SQL的过程就被称为SQL语句拼接。这种方式尤其适用于那些查询条件不确定或可变的场景,例如用户可以...

    经典SQL语句大全(各种sql语句)

    以下是对标题和描述中提到的经典SQL语句的详细解释和扩展: 1. **创建数据库**:`CREATE DATABASE database-name` 用于创建一个新的数据库,其中`database-name`是你为新数据库指定的名称。 2. **删除数据库**:`...

    ACCESS数据库中常见SQL语句教程.docx

    本文档将对ACCESS数据库中常见的SQL语句进行详细的讲解,从基本的SELECT语句到条件查询、谓词In查询、模糊Like查询、空值NULL查询、限制范围Between…And查询等多方面的内容进行了深入的探讨。 一、SELECT语句 ...

    数据库建表操作SQL语句大全

    ### 数据库建表操作SQL语句详解 #### 一、新建表 新建表是数据库管理中最基础的操作之一,用于创建新的数据存储结构。在SQL语言中,`CREATE TABLE`语句用于定义表的结构。 **语法示例**: ```sql CREATE TABLE ...

    access 一次执行多条sql语句

    在Access数据库管理中,有时我们需要在同一事务中执行多条SQL语句来确保数据的一致性和完整性。例如,在更新某个记录后可能还需要执行其他操作,如增加日志记录等。本文将详细介绍如何在Access中实现一次执行多条SQL...

    MyBatis 3 _ SQL 语句构建器1

    在 `selectPersonLike()` 方法中,如果参数 `id`, `firstName`, `lastName` 不为 null,则相应的 WHERE 条件会被添加到 SQL 语句中。这里需要注意的是,因为匿名内部类需要访问外部的局部变量,所以这些参数必须被...

    ORACLE常用SQL语句大全.pdf

    本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...

    sql语句中join的用法

    ### SQL语句中JOIN的用法详解 在SQL查询语言中,`JOIN`是一个非常重要的概念,它允许我们从两个或多个表中提取数据。通过使用不同类型的JOIN操作,我们可以根据表之间的关系来灵活地组织数据。下面我们将详细介绍几...

Global site tag (gtag.js) - Google Analytics