sqlserver学习之 ansi_nulls 与quoted_identifier

在学习SQLserver的过程中总会遇到一些陌生的名词,比如这两个:ansi_nulls  和 quoted_identifier


1.ansi_nulls介绍:

注意:SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。

当 SET ANSI_NULLS 为 ON 时:

即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句或 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。

当 SET ANSI_NULLS 为 OFF 时:

等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。

使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。

此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。


2.quoted_identifier 介绍

注意:标示符是SQL中的中括号[]

SET QUOTED_IDENTIFIER值为ON时:

双引号内的字符被当作是数据库对象。就是说双引号" "和标识符[]效果是一样样的,他们都表示引用的字符是数据库对象。单引号'表示字符串的边界。

当SET QUOTDE_IDENTIFIER OFF时:双引号被解释为字符串的边界,和单引号的作用是类似的。就是说双引号"不能当做标识符使用,但是可以当做字符边界,和单引号'的效果是一样样的。

 1 SET QUOTED_IDENTIFIER ON
 2 SELECT * FROM "USER"    WHERE a='netasp' 
  
 4 SET QUOTED_IDENTIFIER ON
 5 SELECT * FROM [USER] WHERE a='netasp'     在这里 "user"等同于[user],字符串只能用''引起
 7 SET QUOTED_IDENTIFIER OFF
 8 SELECT * FROM [USER]    WHERE a="netasp" 
 9 
10 SET QUOTED_IDENTIFIER OFF
11 SELECT * FROM [USER]    WHERE a= 'netasp'   在这里不能用"user" 当做[user]作为对象,字符串可以用""于''引起


 

 





猜你喜欢

转载自blog.csdn.net/crj_666/article/details/80252136
今日推荐