发布网友 发布时间:2022-04-26 14:06
共4个回答
懂视网 时间:2022-04-30 00:38
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; } }
数据库中的null问题
标签:
热心网友 时间:2022-04-29 21:46
允许空值的意思。
允许空值和有默认值并不冲突,插入数据时如果指定使用默认值,它会使用这个默认值0,如果插入数据时不指定这一列,它会保持空值。
空值是不占用空间的,MySQL中的NULL其实是占用空间的。
扩展资料:
使用NULL可以区分“没有输入数据”和“输入空数据”, 差异在于:
NULL的长度就是NULL,空字符串的长度为0。
一串NULL数据比空字符串优先排序。
COUNT(message)会将空字符串计数进去,但是不会将NULL数据们计入。
可以使用绑定变量搜索某个空字符串,但是不可以这样搜索NULL。
在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。
热心网友 时间:2022-04-29 23:04
允许空值的意思
允许空值和有默认值并不冲突啊,你插入数据时如果指定使用默认值,它会使用这个默认值0,如果插入数据时不指定这一列,它会保持空值的。
热心网友 时间:2022-04-30 00:39
null不是对象,不是个值,是空的,而0是一个值,这个值为0