数据库中的null问题

  在数据库中有些列的值可以为null,这一篇,我们围绕数据库中的null来讲述。

1.  null与 “”、0的区别

     数据库中的null表示——不知道,“”——一个空字符串,0则是一个数值。

     所以null是指不确定的意思,而后两者则都是确定的值。因此,我们在项目中必须严格区分null和空字符串、0   

2.  查询Name为null的人的信息 

    在表 t_person中,Name这一列的值,可以为null,现在我们要查询所有Name为null的人的信息。

   select * from t_people where Name = null

    结果如何? 什么都没有!!!!

因为 = 表比较的意思,在进行比较的时候必须要提供一个定值,null是不确定的,没法比较。

    select * from t_people where Name is null

    这样做就可以查到了, 因为我们检索的是 Name的值是null

3.  数据库中的null 和 C#中的null

   我们需要将值为null的数据插入到数据库中

    value = null;
    new SqlParameter("@Name", value)

    如果这样写到的话,SqlParameter构造函数的第2个参数如果为null,编译器报错:未提供参数。看来我们不能直接将C#中的null插入到数据库中。C#中用来表示数据库中的null的值是—— DBNull.Value 。注意,我们只能用object类型的变量来接收这个值。怎么说object是所有类型的老祖宗呢!

    object value = DBNull;
    new SqlParameter("@Name", value)

4.   C#中可以为null的类型

    像 string这样的类型是可以为null的,而一般的类型,如int、bool、double、DateTime等,都是不可以为null的。

    在数据库中,一个人的年龄有可能是null,而int类型又不能接收null。赋个 0 行不行?大街上遇到一个路人,我们知道他的年龄吗?不知道!!!!而刚出生的婴儿的年龄就是0,路人的年龄和婴儿的年龄显然不相等,怎么可以???

    C#中可以让int等类型接收null值的方法: int? ,这个 ? 代表不确定的意思。

    注意在从数据库中获取数据时,注意类型转换!!不能写 (int)了,而是(int?),否则编译器又要报错了!!!

     // Age是从数据库中读取出来的值,有可能是null
      int? age = (int?)Age;

5.   null 与 DBNull的转换

        /// <summary>
        /// 如果value的值为null,则返回DBNull,否则返回value
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static object ToDBNull(object value)
        {
            if (value == null)
            {
                return DBNull.Value;
            }
            else
            {
                return value;
            }
        }

        /// <summary>
        /// 如果value的值为DBNull,则返回null,否则返回value
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static object FromDBNull(object value)
        {
            if (value == DBNull.Value)
            {
                return null;
            }
            else
            {
                return value;
            }
        }

    

 

时间: 2024-10-31 01:47:03

数据库中的null问题的相关文章

数据库中 ’’ 和 NULL的区别

null不是对象,''是对象 从'',你就可以知道这是一个字符串类型的数据,是一个长度为零的字符串. 从NULL,你只能知道这里没有赋过值,是空的,他不属于任何数据类型. 我们在数据库实际使用中,一般把字符串型变量默认为'',数值型变量默认为0,这样才能保正在进行逻辑运算时不产生类型不匹配的错误.SQL SERVER中函数为:ISNULL(变量,值),如对于整型变量,这样去参加运算:SET @VAR=1+ISNULL(整型变量,0)对于字符型变量,这样去参加运算:SET @VAR=ISNULL(

数据库中的null用法

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

修改数据库中的内容报错:PropertyAccessException:Null value was assinged to a property of primitive type setter of

错误原因:totalTime的类型为int,数据库中为NULL,int 类型不能赋值为NULL,只能为0,所以报此异常. 解决方案:将totalTime的类型改为Integer,或者初始化为0

关于MySQL数据库中null的那些事

在mysql数据库中,null是一个经常出现的情况,关于mysql中的null,有哪些注意事项呢?下面简单总结归纳下,后续会不断补充. 1. is null 首先判断数据库中某一列的值是否为null,不能用等于来判断,必须使用 is.比如,select * from users where user_name is null 或者  select * from users where user_name is not null,而不能是 select * from users where use

使用带参数的SQL语句向数据库中插入空值

private void button1_Click(object sender, EventArgs e) { string name = textBox1.Text; int age = Convert.ToInt32(textBox2.Text.Trim()); int? height = textBox3.Text.Trim().Length == 0 ? null : (int?)Convert.ToInt32(textBox3.Text.Trim()); bool? gender =

--关于null在oracle数据库中是否参与计算,进行验证,

--关于null在oracle数据库中是否参与计算,进行验证,with td as (select null id,1 name from dual ),td1 as ( select null id,2 name from dual ) select * from td, td1 where nvl(td.id,'0.00') = '0' select '1'||'0.1' from dual number number -> char select to_char(3333.00,'999,

在数据库中更新虚拟机实例的任务状态为NULL

有时候一个实例一直卡死在一个任务状态上,不能再对此实例进行任何操作,这是需要在数据库中把这个虚拟机的任务状态改为NULL,修改方法如下: update instances set task_state=NULL whereuuid="5209f21b-b81e-4e19-8193-57263dc93dd7";        注:NULL值的两边是不用""括起来的. 在数据库中更新虚拟机实例的任务状态为NULL

使用mybatis如果类属性名和数据库中的属性名不一样取值就会为null

使用mybatis时如果类属性名和数据库中的属性名不一样取值就会为null 这是不能再去改变javabean中的属性,只能改变sql语句.语句如下所示: <select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee"> select id,last_name lastName,gender,email from tbl_employee where id= #{id} </

MySQL数据库中的算术运算符

MySQL数据库中的算数运算符 MySQL数据库中的算术运算符 一.运算符的概述: 运算符在MySQL数据库中也是很重要的知识体,在执行sql语句的时候这个运算符对操作数据帮助很大.其中运算符的运用可以帮助你减省大量的时间,操作起来也比较灵活. 二.运算符 运算符主要包括"算数运算符"."比较运算符"."罗运算符"."位运算符"四大类,下面我们就一次学习一下. 1.算术运算符 算术运算符在sql语句的时候经常使用,例如对表的字