oracle 中的null与''

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与''

时间: 2024-10-26 01:48:54

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

Oracle中的null

1. 包含null的表达式都为null 2. null永远!= null select  * from emp where comm=null     // error select  *   from emp where comm is null 3. nvl(filedName,0)         // 如果为空值时替换成另一个值(  nvl2 )

Sql与oracle中null值的区别

原贴链接请点击: 1 null值的介绍 NULL 是数据库中特有的数据类型,当一条记录的某个列为 NULL ,则表示这个列的值是未知的.是不确定的.既然是未知的,就有无数种的可能性.因此, NULL 并不是一个确定的值. 这是 NULL 的由来.也是 NULL 的基础,所有和 NULL 相关的操作的结果都可以从 NULL 的概念推导出来. 2 oracle中的null值介绍 在不知道具体有什么数据的时候,即未知,可以用NULL, 称它为空,ORACLE中,含有空值的表列长度为零.允许任何一种数据

Oracle 在not in中使用null的问题

http://www.linuxidc.com/Linux/2012-07/66212.htm 以前还专门小总结过一下Oracle中关于NULL的一些问题,碰巧今天在看书的过程中又看到了另外一个以前没发现的需要注意的地方,那就是在not in中使用null的问题. SQL> select * from dept; DEPTNO DNAME          LOC---------- -------------- -------------        10 ACCOUNTING     NE

oracle中的函数

ORACLE中函数          Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的有两类,单行函数和分组函数 . 单行函数: 单行函数 分类 函数 功能 示例 字符函数 LPAD(<c1>,<i>[,<c2>]) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i. SELECT  LPAD('Hello!',9,1) leftpad,RPAD(

细说Oracle中NULL值

1.NULL是什么? NULL表示UNKNOW(未知),其不代表不论什么值. 比如一行中某列没有不论什么值即为NULL. ORACLE同意不论什么一种数据类型的字段为空,除了下面两种情况: 1)主键字段(primary key), 2)定义时已经加了NOT NULL限制条件的字段 2.NULL有什么用? 1)NULL可用于条件推断: SELECT * FROM EMP WHERE COMM IS NULL; 或 SELECT * FROM EMP WHERE COMM IS NOT NULL;

oracle中NULL字符的比较

在ORACLE中,将空字符串视为NULL,任何值与NULL比较结果都为NULL.如此一来,在比较两个字符串的时候就会出现意外.请看以下的例子: DECLARE i VARCHAR2(10) := NULL; v VARCHAR2(10) := 'ABC'; BEGIN IF(i = v) THEN DBMS_OUTPUT.PUT_LINE('相等'); ELSE DBMS_OUTPUT.PUT_LINE('不等'); END IF; END; 请你用你聪明的头脑判断一下,结果应该是什么?很容易就

通过案例学调优之--Oracle中null使用索引

通过案例学调优之--Oracle中null使用索引  默认情况下,Oracle数据库,null在Index上是不被存储的,当在索引列以"is null"的方式访问时,无法使用索引:本案例,主要向大家演示如何在存在null的索引列上,使用"is null"访问索引. 案例分析: 1.建立表和普通索引 13:52:23 [email protected] prod >create table t2 (x int,y int); Table created. 14:

Oracle中Null与空字符串&#39; &#39;的区别

含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除了以下两种情况: 1.主键字段(primary key), 2.定义时已经加了NOT NULL限制条件的字段 说明: 1.等价于没有任何值.是未知数. 2.NULL与0.空字符串.空格都不同. 3.对空值做加.减.乘.除等运算操作,结果仍为空. 4.NULL的处理使用NVL函数. 5.比较时使用关键

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值