1.先看看Null与''在oracle中的表现

C:\Users\zen>sqlplus hr/hr

SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 31 10:30:32 2017

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create table test_null(id_ number,name_ varchar2(10)); Table created. SQL> insert into test_null values(1,'oracle'); 1 row created. SQL> insert into test_null values(2,''); 1 row created. SQL> insert into test_null values(3,null); 1 row created. SQL> select * from test_null; ID_ NAME_
---------- ----------
1 oracle
2
3 SQL> select nvl(name_,'It is null') nvl_null,nvl('','It is empty string') emptystr from test_null; NVL_NULL EMPTYSTR
---------- ------------------
oracle It is empty string
It is null It is empty string
It is null It is empty string SQL> select * from test_null where name_ is null; ID_ NAME_
---------- ----------
2
3 SQL> select * from test_null where name_=''; no rows selected SQL> select * from test_null where cast(name_ as varchar2(10))=''; no rows selected SQL> select * from test_null where cast(name_ as varchar2(10))=cast('' as varchar2(10)); no rows selected SQL> select * from test_null where name_<>''; no rows selected

SQL> select * from test_null where nvl(name_,'')='';


no rows selected


SQL> select * from test_null where nvl(name_,'A')='A';


ID_ NAME_
---------- ----------
2
3


SQL>

2.关于以上现象的解释

oracle 将'' 当成了null 处理。每个null都是独一无二的,对null的操作只能是 is null OR is not null,对于null的=<>,>,<的逻辑判断都会得到否。

3.看看null与''在Mysql中的表现

C:\Users\zen>mysql -uzen -p
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.24-log MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use product_test;
Database changed
mysql> drop table test_null;
Query OK, 0 rows affected (0.37 sec) mysql> create table test_null(id_ int,name_ varchar(127));
Query OK, 0 rows affected (0.59 sec) mysql> insert into test_null values(1,'oracle'),(2,''),(3,null);
Query OK, 3 rows affected (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from test_null;
+------+--------+
| id_ | name_ |
+------+--------+
| 1 | oracle |
| 2 | |
| 3 | NULL |
+------+--------+
3 rows in set (0.00 sec) mysql> select * from test_null where name_ is null;
+------+-------+
| id_ | name_ |
+------+-------+
| 3 | NULL |
+------+-------+
1 row in set (0.06 sec) mysql> select * from test_null where name_='';
+------+-------+
| id_ | name_ |
+------+-------+
| 2 | |
+------+-------+
1 row in set (0.00 sec) mysql> select * from test_null where name_<>'';
+------+--------+
| id_ | name_ |
+------+--------+
| 1 | oracle |
+------+--------+
1 row in set (0.00 sec) mysql> select * from test_null where name_ is not null;
+------+--------+
| id_ | name_ |
+------+--------+
| 1 | oracle |
| 2 | |
+------+--------+
2 rows in set (0.00 sec) mysql>

4.在mysql中null 就是null,''就是空字符,没有将二者混淆起来。

oracle 中的null与''的更多相关文章

  1. Oracle中的NULL、’’(空字符串)以及’_’(空格)

    本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...

  2. 【转】oracle中的NULL、''(空字符串)以及'_'(空格)

    在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...

  3. Oracle中的null

    测试数据:公司部分员工基本信息

  4. Oracle中的null与空字符串''的区别

    含义解释:问:什么是NULL?答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零.ORACLE允许任何一种数据类型的字段为空,除了以下 ...

  5. oracle中空值null的判断和转换:NVL的用法

    1.NULL空值概念 数据库里有一个很重要的概念:空值即NULL.有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在. 2.NULL空值判断 空值不等同于 ...

  6. oracle 中关于null的操作

    空值 空值一般用NULL表示 一般表示未知的.不确定的值,也不是空格 一般运算符与其进行运算时,都会为空 空不与任何值相等 表示某个列为空用:IS NULL  不能使用COMM=NULL这种形式 某个 ...

  7. oracle中如何处理null

    从两个表达式返回一个非 null 值.语法NVL(eExpression1, eExpression2)参数eExpression1, eExpression2如果 eExpression1 的计算结 ...

  8. Oracle 在not in中使用null的问题

    http://www.linuxidc.com/Linux/2012-07/66212.htm 以前还专门小总结过一下Oracle中关于NULL的一些问题,碰巧今天在看书的过程中又看到了另外一个以前没 ...

  9. oracle中的函数

    ORACLE中函数          Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的 ...

随机推荐

  1. 能否自己也写一个类叫做java.lang.String?

    这次的随笔很逗吧~没错,我们的确也可以自己在创建一个包java.lang,然后在 相应的包下面创建一个对应的类String,但是在每次jre运行的时候,我们都回去加载原来默认的java.lang.St ...

  2. Spring MVC配置详解(3)

    一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.ja ...

  3. python+selenium简单实现拖动元素实例

    from  selenium  import  webdriver#引入ActionChains类from  selenium.webdriver.common.action_chains  impo ...

  4. 【256】◀▶IEW-答案

    附答案 Unit I Fast food Model Answers: Model 1 The pie chart shows the fast foods that teenagers prefer ...

  5. [poj1273]Drainage Ditches(最大流)

    解题关键:最大流裸题 #include<cstdio> #include<cstring> #include<algorithm> #include<cstd ...

  6. JDBC编程之数据更新

    -------------------siwuxie095                             JDBC 编程之数据更新             首先下载 MySQL 的 JDBC ...

  7. MySql集合查询

    SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作. 集合操作主要包括并操作UNION.交操作INTERSECT.差操作EXCEPT. 注意,参加集合操作的各查询结果 ...

  8. 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器

    顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...

  9. final注意事项

    final修饰的类为终态类,不能被继承,而 抽象类是必须被继承的才有其意义的,因此,final是不能用来修饰抽象类的. final修饰的方法为终态方法,不能被重写.而继承抽象类,必须重写其方法. 抽象 ...

  10. C#中IQueryable和IEnumerable的区别

    最近的一个面试中,被问到IQueryable 和 IEnumerable的区别, 我自己看了一些文章,总结如下: 1. 要明白一点,IQueryable接口是继承自IEnumerable的接口的. 2 ...