• SqlServer中的Null值空值问题


    sql使用的是三值谓词逻辑,所以逻辑表达式返回的结果可以为True、False或者未知,在三值逻辑中返回True与不返回False并不完全一样,

    SQL对查询过滤条件的处理:接受TURE  拒绝FALSE和UnKnown

    SQLCHECK约束的处理:接受FALSE 拒绝 TRUEUNKnown

    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分别为3null,表达式Count(*)返回2COuntQTY)返回1,因为一行是已知值

     

    ANSI SQL有两种UNIque约束:

    1. 将多个NULL值视为相等(只允许有一个NULL值)
    1. 将多个NULL值视为不同(允许有多个NULL值)

    SQLSERVER只实现了前者

  • 相关阅读:
    [论文阅读] Look Closer to Supervise Better: OneShot Font Generation via ComponentBased Discriminator
    Master笔记 22711 @GANs N' Roses@GAN指标
    [vite]使用pnpm创建vite+vue3项目
    set,Map 和 数组的扩展方法
    ES6 中的导包
    ES6 中的类
    Symbol 类型
    ES6 中的迭代器和生成器
    ES6 中的对象
    基础语法
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/3983426.html
Copyright © 2020-2023  润新知