null不是对象,''是对象
从'',你就可以知道这是一个字符串类型的数据,是一个长度为零的字符串。
从NULL,你只能知道这里没有赋过值,是空的,他不属于任何数据类型。

我们在数据库实际使用中,一般把字符串型变量默认为'',数值型变量默认为0,这样才能保正在进行逻辑运算时不产生类型不匹配的错误。
SQL SERVER中函数为:ISNULL(变量,值),

对于整型变量,这样去参加运算:
SET @VAR=1+ISNULL(整型变量,0)
对于字符型变量,这样去参加运算:
SET @VAR=ISNULL(字符型变量,'')

ü  null不是值,它表示数值未知或者不确定

ü  null是一个属性 ,表示其中无内容,而空是表示数值为空,但有默认值,可能为0.

ü  NULL的判断不能简单的用=或!= 只能使用IS (NOT) NULL来判断.所以 is not null 和!=null的结果是完全不同的.虽然!=null编译不会报错,但是没有人这样来判断某个字段为null

ü  在数据库中,空值用来表示实际值未知或无意义的情况。因为空值表示缺少数据,所以空值和其它值没有可比性,即不能用等于、不等于、大于或小于和其它数值比较,当然也包括空值本身(但是在decode中例外,两个空值被认为是等价)。测试空值只能用比较操作符IS NULL 和IS NOT NULL。如果使用带有其它比较操作符的条件表达式,并且其结果依赖于空值,那么其结果必定是NULL。在where条件中,Oracle认为结果为NULL的条件为FALSE,带有这样条件的select语句不返回行,也不返回错误信息。

ü  新增或修改记录某字段为‘’时,到数据库中此字段就是null(数据库的缺省值也是null)查询时,不能用 的方式,只能 is null或is not null  ???

ü  三者的区别就是:
isnull是一种类型测试,测试是否为空值(null)类型。
isEmpty是一种值测试,测试是否是空值。但这个不同语言中采用的方法不同。
=""是串测试,测试值是否为空值。

ü  创建数据库的时候,对某个字段定义了 NOT NULL,但是,在写入数据的时候,空字符串''也能写入成功:

空 (NULL) 值表示数值未知。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。

在写入数据的时候,空字符串'' 也是一个确定的值,所以就算你定义了 NOT NULL 也可以被写入。

ü  在定义中说,空值不与任何值相等。因此不能使用 = null 做判断。在Sql语句中,唯一可以使用 = null的就是update语句中的赋值语句,其他地方都不可以使用。

数据库中 ’’ 和 NULL的区别的更多相关文章

  1. 数据库中MyISAM与InnoDB区别

    数据库中MyISAM与InnoDB区别 首页 » DIY技术区 » 数据库中MyISAM与InnoDB区别 09:57:40   MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是I ...

  2. 数据库中的null问题

    在数据库中有些列的值可以为null,这一篇,我们围绕数据库中的null来讲述. 1. null与 “”.0的区别   数据库中的null表示——不知道,“”——一个空字符串,0则是一个数值.  所以n ...

  3. 如何解决数据库中,数字+null=null

    如何解决数据库中,数字+null=null 我使用SQLServer,做一个 update 操作,累计一个数.在数据库中,为了方便,数据库中这个字段我设为允许为空,并且设置了默认值为 0 .但是在新增 ...

  4. 数据库中is null(is not null)与=null(!=null)的区别

    在标准SQL语言(ANIS SQL)SQL-92规定的Null值的比较取值结果都为False,既Null=Null取值也是False.NULL在这里是一种未知值,千变万化的变量,不是“空”这一个定值! ...

  5. 谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表

    MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...

  6. java中的null和""区别

    (1)问题一:null和""的区别String s=null;string.trim()就会抛出为空的exception String s=""; string ...

  7. 谈谈数据库中MyISAM与InnoDB区别

    MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与 ...

  8. 数据库中char和varchar区别

    区别: 1)char长度是固定,而varchar长度是可变的: 比如:'abc'对于char(10)表示存储字符将占10个字节(包括7个空字符),而同样varchar(10)只占3个自己长度,10只是 ...

  9. java中的null和""区别------&&与&的区别

    (1)问题一:null和""的区别String s=null;string.trim()就会抛出为空的exception String s=""; string ...

随机推荐

  1. AndroidStudio问题汇总

    1.Error:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency 'com ...

  2. MySQL中临时表的基本创建与使用教程(CREATETEMPORARY TABLE)

    当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询. ...

  3. 使用mingw 对libcURL,openSSL,zLib交叉编译

    使用mingw 对libcURL,openSSL,zLib交叉编译   将三个库解压到同一目录下 比如取目录名为 "source" 的目录   提前安装active-perl 配置 ...

  4. NSTimer 的简易使用方法

      一.使用方式 1.声明NSTimer方法   static CGFloat sIntervalTime = 15.f; //定时刷新时间间隔 @property (nonatomic, stron ...

  5. 只言片语 - cell 图片复用问题

    一. 今日做项目遇到图片复用问题,返回cell高度相同,由于网络不好出现图片复用,发现问题   Cell 图片加载方法如下: - (void)sd_setImageWithURL:(NSURL *)u ...

  6. C++程序设计1(侯捷video 1-6)

    一.头文件的防御式声明(video2) #ifndef __COMPLEX__ #define __COMPLEX__ //内容 #endif 二.初步感受模板(video2) 定义的时候: //复数 ...

  7. Python程序中的协程操作-gevent模块

    目录 一.安装 二.Gevent模块介绍 2.1 用法介绍 2.2 例:遇到io主动切换 2.3 查看threading.current_thread().getName() 三.Gevent之同步与 ...

  8. 大白话五种IO模型

    目录 一.I/O模型介绍 二.阻塞I/O模型 2.1 一个简单的解决方案 2.2 该方案的问题 2.3 改进方案 2.4 改进后方案的问题 三.非阻塞I/O模型 3.1 非阻塞I/O实例 四.多路复用 ...

  9. 高效 MacBook 工作环境配置,超实用!

    作者:正鹏 & 隃墨 http://www.xialeizhou.com/?p=71 前言 工欲善其事,必先利其器,工具永远都是用来解决问题的,没必要为了工具而工具,一切工具都是为了能快速准确 ...

  10. 源码解读·RT-Thread操作系统从开机到关机

    本篇内容比较简单,但却很繁琐,篇幅也很长,毕竟是囊括了整个操作系统的生命周期.这篇文章的目的是作为后续设计多任务开发的铺垫,后续会单独再抽出一篇分析任务的相关知识.另外本篇文章以单核MCU为背景,并且 ...