您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

SqlServer中的Null值空值问题

2024/4/19 10:30:32发布13次查看
sql使用的是三值谓词逻辑,所以逻辑表达式返回的结果可以为true、false或者未知,在三值逻辑中返回true与不返回false并不完全一样, sql对查询过滤条件的处理:接受ture 拒绝false和unknown sql 对 check 约束的处理:接受 false 拒绝 true 和 unknown
sql使用的是三值谓词逻辑,所以逻辑表达式返回的结果可以为true、false或者未知,在三值逻辑中返回true与不返回false并不完全一样,
sql对查询过滤条件的处理:接受ture  拒绝false和unknown
sql对check约束的处理:接受false 拒绝 true和unknown
unknown的微妙之处在于当对它取反时  结果仍是unknown,
对两个null值进行比较的表达式(null=null),其计算的结果仍为unknown,因为null值代表的是一个不可知的值,所以实际上无法判断一个不可知的值是否等于另一个,因此sql提供了两个谓词is null和is not null来取代=null和null, 使用not in 谓词过滤数据时,如果 in的值中包含null,则永远不会返回值(select ordernum from [dbo].[salesorder] where ordernum not in ('100128054',null))
当进行分组和排序时 ,认为两个null值是相等的,就是说group by子句会在每个组中重新组织所有的null值
orderby子句也会对所有的null值进行排序,t-sql是把null值得排在了有效值之前
所有的聚合函数都会忽略null值,只有一个例外count(*),假设一个组有两行,其qty分别为3,null,表达式count(*)返回2,count(qty)返回1,因为一行是已知值
ansi sql有两种unique约束:
将多个null值视为相等(只允许有一个null值)将多个null值视为不同(允许有多个null值)sqlserver只实现了前者
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product