数据库中 ’’ 和 NULL的区别

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语句中的赋值语句,其他地方都不可以使用。

时间: 2024-10-09 13:08:38

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

数据库中的null问题

在数据库中有些列的值可以为null,这一篇,我们围绕数据库中的null来讲述. 1. null与 “”.0的区别   数据库中的null表示——不知道,“”——一个空字符串,0则是一个数值.  所以null是指不确定的意思,而后两者则都是确定的值.因此,我们在项目中必须严格区分null和空字符串.0 . 2. 查询Name为null的人的信息 在表 t_person中,Name这一列的值,可以为null,现在我们要查询所有Name为null的人的信息. select * from t_peopl

数据库中varchar和Nvarchar区别与联系

在数据库中新建表的时候发现了字段类型有的带n有的不带n,那么两者之间有什么区别? 于是上网查找一些资料如下: 一. 1.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARC

IOS中nil&null&nsnull区别

** 类型,指针的指针,是一个很古老的 C 语言的技巧  用处:一个方法,可以返回多个数值  NULL & nil 有什么区别  - NULL     是 C 的,空地址,数字,本身的数值是 0    不能给 NULL 消息 - nil      nil 是 OC 的,nil 是一个(空)对象,指针地址指向的是 NULL    在 OC 中,可以给 nil 发送任何消息,都不会抱错  从 Xcode 6 开始,取消了 NULL 的智能提示,因为 swift 中没有 NULL 的概念,只有 nil

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

MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. 与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键.如果事物回滚将造成不完全回滚,不具有原子性.如果执行大量的SELECT,MyISAM是更好的选择. MyIASM是IASM表的新版本,有如下扩展

【实习记】2014-09-02MySQL数据库中key与index区别

做数据库优化时,使用sql语句调整数据库,在此记录一下. 好博客,好文章 <mysql常用SQL语句>http://www.cnblogs.com/jevo/p/3257222.html <MySQL 主键与索引的联系与区别分析>http://www.jb51.net/article/34037.htm 1. 主键一定是唯一性索引,唯一性索引并不一定就是主键. 2. 一个表中可以有多个唯一性索引,但只能有一个主键. 3. 主键列不允许空值,而唯一性索引列允许空值. 4. 索引可以提

谈谈数据库中MyISAM与InnoDB区别

MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键.如果事物回滚将造成不完全回滚,不具有原子性.如果执行大量的SELECT,MyISAM是更好的选择. MyIASM是IASM表的新版本,有如下扩展:

关于数据库中字符串类型的区别与使用方法

数据库的数据类型: 整数:int,smallint,bigint,decimal 实数类型:float,real. 字符串类型:char/nchar .varchar/nvarchar. 1. 有没有var的区别:带var的叫可变长度的字符串类型,不带var的是定长的字符串.定长的字段,如果存储的数据没达到最大长度,系统会在录入的字符串 后边补够空格.当记录的数据有固定长度时,选用定长的(char/nchar).当无法确定记录的数据有多长时,选用变长的(varchar /nchar) 定长:很容

数据库中where与having区别

having 和where 都是用来筛选用的 having 是筛选组 而where是筛选记录 他们有各自的区别 1>当分组筛选的时候 用having 2>其它情况用where-----------------------------------------------------用having就一定要和group by连用,用group by不一有having (它只是一个筛选条件用的)------------------------------------------------------

数据库中的null用法

原文地址:https://www.cnblogs.com/Koma-vv/p/9672109.html