数码资讯
两者之间的差异不是空的!=SQL中的NULL
通常有两种写作方式:不是空的和!= null.it也是经常遇到的,数据库中满足条件的数据!= null,但返回到空集合。实际上,这是由于对两个使用的差异缺乏理解。 默认情况下,建议使用null做条件判断,因为SQL默认为xx!0的判断将永远回到0行,而不会引发语法错误。 为什么会这样 在SQL Se
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
通常有两种写作方式:不是空的和!= null.it也是经常遇到的,数据库中满足条件的数据!= null,但返回到空集合。实际上,这是由于对两个使用的差异缺乏理解。
默认情况下,建议使用null做条件判断,因为SQL默认为xx!0的判断将永远回到0行,而不会引发语法错误。
为什么会这样
在SQL Server文档中,为null值的比较定义了两条规则,例如在SQL Server 2000中:
规则之一就是指定的ansisql空值的比较值的结果(SQL-92)是虚假的,而零= null值也是错误的。另一个是不允许按照ansisql标准,即空空是真的。:
例如,数据表测试结构:
复制代码代码如下所示:
行号数据
-------------------
1'liu杨
2空
3 '12345
根据ANSI SQL标准,下面的两个查询不返回任何行:
查询1:从数据=空的测试中选择*
查询二:在数据为null的测试中选择*
根据非ANSI SQL标准,查询1将返回第二行,查询2返回1和3行。
这是因为在SQL中,零是一个独特的类型的数据,这相当于没有价值的和未知的number.null不同于0,空字符串和空间。
ANSI标准中的空值行需要下面的查询:
复制代码代码如下所示:
从数据为空的测试中选择*
由此可以看出,在非ANSI SQL标准中,数据= NULL相当于数据为空,而数据null等于数据不是null。
因此,我们要记住:当默认情况下使用比较条件时,使用关键字为null,而不是null。
如果你必须使用!=条件判断空,你需要添加此命令语句:设置ansi_nulls关闭,当数据库进入ANSI SQL的非标准模式,你会发现不是零和!NULL等于。
模式切换指令集ansi_nulls {在} /关在这里使用的价值采用ANSI SQL标准的严格,和值采用非标准兼容模式。此外,集ansi_defaults {在} /关闭命令也可以实现标准的切换,但这一命令控制一套SQL-92符合标准,包括空值的标准。
默认情况下,数据库管理器(DB)是下集ansi_nulls。但我们的大多数应用程序是通过ODBC或OLEDB访问数据库。作为一个开放的、兼容的数据库访问程序,它可能是一个兼容性的考虑,并setansi_nulls值设置为上。需要注意的一些问题,如应用存储过程或自定义函数都是基于数据库的图书馆。默认情况下,setansi_nulls是关闭的,在这样一个程序,在一个环境setansi_nulls不能修改规则,修改数据库配置参数。
例如,您的应用程序使用ADODB访问数据库,并使用OLEDB或ODBC数据提供者。查询1:选择*从测试数据为零
我们可以直接将命令发送到查询的结果集,也可以将其放入存储过程中,但是两个查询的结果不同,如果直接使用查询命令,则不返回任何行;如果访问存储过程,则返回第二行的数据。
最后,我们重申在进行SQL条件查询比较时,使用关键字的空默认值是null,而不是null。
默认情况下,建议使用null做条件判断,因为SQL默认为xx!0的判断将永远回到0行,而不会引发语法错误。
为什么会这样
在SQL Server文档中,为null值的比较定义了两条规则,例如在SQL Server 2000中:
规则之一就是指定的ansisql空值的比较值的结果(SQL-92)是虚假的,而零= null值也是错误的。另一个是不允许按照ansisql标准,即空空是真的。:
例如,数据表测试结构:
复制代码代码如下所示:
行号数据
-------------------
1'liu杨
2空
3 '12345
根据ANSI SQL标准,下面的两个查询不返回任何行:
查询1:从数据=空的测试中选择*
查询二:在数据为null的测试中选择*
根据非ANSI SQL标准,查询1将返回第二行,查询2返回1和3行。
这是因为在SQL中,零是一个独特的类型的数据,这相当于没有价值的和未知的number.null不同于0,空字符串和空间。
ANSI标准中的空值行需要下面的查询:
复制代码代码如下所示:
从数据为空的测试中选择*
由此可以看出,在非ANSI SQL标准中,数据= NULL相当于数据为空,而数据null等于数据不是null。
因此,我们要记住:当默认情况下使用比较条件时,使用关键字为null,而不是null。
如果你必须使用!=条件判断空,你需要添加此命令语句:设置ansi_nulls关闭,当数据库进入ANSI SQL的非标准模式,你会发现不是零和!NULL等于。
模式切换指令集ansi_nulls {在} /关在这里使用的价值采用ANSI SQL标准的严格,和值采用非标准兼容模式。此外,集ansi_defaults {在} /关闭命令也可以实现标准的切换,但这一命令控制一套SQL-92符合标准,包括空值的标准。
默认情况下,数据库管理器(DB)是下集ansi_nulls。但我们的大多数应用程序是通过ODBC或OLEDB访问数据库。作为一个开放的、兼容的数据库访问程序,它可能是一个兼容性的考虑,并setansi_nulls值设置为上。需要注意的一些问题,如应用存储过程或自定义函数都是基于数据库的图书馆。默认情况下,setansi_nulls是关闭的,在这样一个程序,在一个环境setansi_nulls不能修改规则,修改数据库配置参数。
例如,您的应用程序使用ADODB访问数据库,并使用OLEDB或ODBC数据提供者。查询1:选择*从测试数据为零
我们可以直接将命令发送到查询的结果集,也可以将其放入存储过程中,但是两个查询的结果不同,如果直接使用查询命令,则不返回任何行;如果访问存储过程,则返回第二行的数据。
最后,我们重申在进行SQL条件查询比较时,使用关键字的空默认值是null,而不是null。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。