zoukankan      html  css  js  c++  java
  • 数据库中 ’’ 和 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语句中的赋值语句,其他地方都不可以使用。

  • 相关阅读:
    我的Java学习推荐书目
    BTrace使用简介
    BTrace使用小结
    如何在生产环境使用Btrace进行调试
    BTrace : Java 线上问题排查神器
    淘宝Tprofiler工具实现分析
    JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
    性能工具TProfiler介绍文档
    分布式系统理论基础
    微信小程序
  • 原文地址:https://www.cnblogs.com/ammy714926/p/4195392.html
Copyright © 2011-2022 走看看