帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:NULL  NUL  


目录

序言

显示错误消息总是比生成错误输出好。 当你处理 NULL 时,即使代码有某些逻辑错误,也可以能会获得输出。 它对维护数据库输出的质量和准确性起着至关重要的作用。

在本文中,我将介绍 NULL 中的不同方面。一般的感知和最佳实践。

你的评论非常感谢你。 :) 。

对空值的一般感知。

  • 是空白的。
  • 它是空的?
  • 是零。
  • 什么都没有。
  • 缺少价值。
  • 它是最低值。
  • 它是可以忽略的值。
  • 它是可选值。
  • 这是无效的。
  • 是空的。

什么是空的

NULL 表示不等于自身的'无结果'或者'未知'。

NULL <> NULL --NULL does not equals NULL.if(NULL=NULL) -- It returns nothing(no error and no result).
NULL + Anything=NULL -- If you add anything to add, it always return NULL.

3的规则:系统处理空值:

DBMS必须允许每个字段保持 NULL ( 或者空) 。 具体地说,它必须支持"缺少信息和不适用的信息"的表示,不同于所有的常规值( 比如"和任何它的他数字"。在数值的情况下) 。 还暗示,这种表示必须由系统的方式来操纵。

NULL 表示该值未知。 值 NULL 与空值或者零值不同。 没有两个 NULL 值相等。 由于每个 NULL的值未知,所以两个 NULL 值或者 NULL 和任何其他值之间的比较都是未知的。

维基服务

SQL NULL 是用来表示缺失值的术语。 表中的NULL 值是字段中看起来为空白的值。 具有 NULL 值的字段是没有值的字段。 理解 NULL 值与零值或者包含空格的字段是非常重要的。

处理NULL值的函数和运算符

COALESCEISNULL T-SQL函数用于返回输入参数之间的第一个非 NULL 表达式。 两种方法都用于处理 NULL 中的值。 ISNULL 接受两个参数,COALESCE 根据需要接受两个上的参数。

SNISNULL
1.SQL Server 标准。
2.如果不是 NULL,则返回第一个参数。
3.如果第二个参数是 NULL,则返回第二个参数。
4.语法:ISNULL(argument1,argument2)
argument1: 表达式
argument2: 替换值
5.例如:
declare@x int=null;
 Select ISNULL(@x,'0') AS ISNULL_OUTPUT
 ***************************************************
 Output : 
 ISNULL_OUTPUT
 0--@x is null that is replaced with 0 ***************************************************
SNCOALESCE
1.ANSI标准。
2.返回第一个用户定义的NULL 参数
3.如果所有参数都是 NULL,则返回 NULL
4.语法:COALESCE ( 参数 [1.......n ] )
n: 参数
5.例如:
declare@x int=null;
 declare@y int=null;
 declare@z int=20;
 COALESCE(@x,@y,@z,'0') as COALESE_OUTPUT
 --***************************************************Output : 
 COALESE_OUTPUT
 20--First and second argument(@x and @y) are null so that COALESE return first--non-NULL argument as 20(a value of @z)--***************************************************

NULLIF

NULLIF 接受两个参数,如果参数是 NULL,则返回 NULL ;否则返回第一个参数。

declare@x int=0;selectNULLIF(@x,0) as Result -- return NULL if @x is 0--**************************************OutputResultNULL--**************************************

为空,并且不是空

不能用关系运算符( 如= 。<或者 <> ) 测试 NULL 值。 为了检查某个值是否为 NULL,我们需要使用 IS NULL 或者 IS NOT NULL 运算符。

declare@value int=null;if@valueisNULLbeginSelect'Value is NULL'AS Resultendset @value=1if@valueisNOTNULLbeginSelect'Value is not NULL'As Resultend

关系运算符中的 NULL 。

  • NULL 不等于任何值
  • NULL的值不大,不小于或者不不同
  • NULL 不等于 NULL 本身。
  • NULL 不大于 NULL,小于或者不同于

条件运算符中的 NULL

中的,而非在

  • IN 不返回值为 NULL的匹配项
  • 如果至少有一个值是 NULLNOT IN 返回 false
declare@Temptable(
 Col1 int,
 Col2 varchar(20)
 )insertinto@Tempvalues(1,'Test 1')insertinto@Tempvalues(2,'Test 2')insertinto@Tempvalues(3,'Test 3')insertinto@Tempvalues(4,'Test 4')insertinto@Tempvalues(5,'Test 5')insertinto@Tempvalues(null,'Test 6')insertinto@Tempvalues(7,'Test 7')insertinto@Tempvalues(null,'Test 8')insertinto@Tempvalues(null,'Test 9')insertinto@Tempvalues(10,'Test 10')select * from@Tempwhere Col1 in(1,3,6)--It returns 3 rowsselect * from@Tempwhere Col1 in(1,3,6,null)--It does not include null so it returns 3 rows select * from@Tempwhere Col1 notin(1,3,6,null)-- it does not return any result 

介于之间的

  • 如果某个限制值为 NULL,则 BETWEENNOT BETWEEN 返回 false
declare@Temptable(
 Col1 int,
 Col2 varchar(20)
 )insertinto@Tempvalues(1,'Test 1')insertinto@Tempvalues(2,'Test 2')insertinto@Tempvalues(3,'Test 3')insertinto@Tempvalues(4,'Test 4')insertinto@Tempvalues(5,'Test 5')insertinto@Tempvalues(null,'Test 6')insertinto@Tempvalues(7,'Test 7')insertinto@Tempvalues(null,'Test 8')insertinto@Tempvalues(null,'Test 9')insertinto@Tempvalues(10,'Test 10')select * from@Tempwhere Col1 between1and7--Returns 6 rowsselect * from@Tempwhere Col1 betweennulland7--No resultselect * from@Tempwhere Col1 between1andnull--No resultselect * from@Tempwhere Col1 notbetween1and7--Returns 1 rowselect * from@Tempwhere Col1 notbetweennulland7--Returns 1 rowselect * from@Tempwhere Col1 notbetween1andnull--No result

为空,顺序为 By(Sorting)

NULL 是排序顺序中的最小值。

GROUP BY 中的 NULL

执行 GROUP BY 时,NULL的值被认为是相等的。 如果 GROUP BY 子句中的列包含带有 NULL的行,那么这些行将被分组到一个组中。

聚合方法中的为空

聚合函数- COUNTSUMAVGMAXMINLIST - 不处理 NULL 。 这里规则有一个例外: COUNT(*) 返回所有行的计数,甚至是字段为 NULL的行。 但是 COUNT(FieldName) 与其他聚合函数类似,因为它只计算指定字段不是 NULL的行。

历史记录

  • 2014-10-04: 初始版本


文章标签:NULL  NUL  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语