关于 SET QUOTED_IDENTIFIER ON 和 SET ANSI_NULLS ON

 关于 SET QUOTED_IDENTIFIER ON 和 SET ANSI_NULLS ON  
   
这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。  
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。  
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 的行。    
  QUOTED_IDENTIFIER 的作用是为了定义标识符    
  符合所有标识符格式规则的标识符可以使用分隔符,也可以不使用分隔符。      不符合标识符格式规则的标识符必须使用分隔符。         
  分隔标识符在下列情况下使用:           
  当在对象名称或对象名称的组成部分中使用保留字时。      
  推荐不要使用保留关键字作为对象名称。从   Microsoft&reg;   SQL   Server™   早期版本升级的数据库可能含有标识符,这些标识符包括早期版本中未保留而
在   SQL   Server   2000   中保留的字。可用分隔标识符引用对象直到可改变其名称。    


     
  当使用未被列为合法标识符的字符时。      
  SQL   Server   允许在分隔标识符中使用当前代码页中的任何字符。但是,不加选择地在对象名称中使用特殊字符将使   SQL   语句和脚本难以阅读和维护。         
  Transact-SQL   所使用的分隔符类型:                   
  说明     分隔符仅用于标识符。分隔符不能用于关键字,不论它们在   SQL   Server   中是否被标记为保留字。         
  被引用的标识符用双引号   (")   分隔开:      
  SELECT   *   FROM   "Blanks   in   Table   Name"         
  括在括号中的标识符用方括号   ([   ])   分隔:        SELECT   *   FROM   [Blanks   In   Table   Name]         
  仅当   QUOTED_IDENTIFIER   选项设置为   ON   时,被引用的标识符才有效。默认情况下,当用于   SQL   Server   的   Microsoft   OLE   DB   提供程序
和   SQL   Server   ODBC   驱动程序连接时,将   QUOTED_IDENTIFIER   设置为   ON。默认情况下,DB-Library   不将   QUOTED_IDENTIFIER   设置为   ON。不管使用何种接口,个别应用程序或用户可随时更改设置。SQL   Server   提供了多种方法来指定该选项。例如,在   SQL   Server   企业管理器和   SQL   查询分析器中,该选项可在对话中设置。在   Transact-SQL   中,可以使用   SET   QUOTED_IDENTIFIER、
sp_dboption   的   quoted   identifier   选项或   sp_configure   的   user   options   选项将此选项设为多种级别。         
  当   QUOTED_IDENTIFIER   为   ON   时,对于   SQL   语句中的双引号和单引号   (')   的使用,SQL   Server   遵循   SQL-92   规则:      



     
  双引号只能用于分隔标识符,不能用于分隔字符串。      
  为保持与现有应用程序的兼容性,SQL   Server   并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。         
  单引号必须用来包含字符串,不能用于分隔标识符。      
  如果字符串包含单引号,则需要在单引号前再增加一个单引号:         
  SELECT   *   FROM   "My   Table"      WHERE   "Last   Name"   =   'O''Brien'         
  当   QUOTED_IDENTIFIER   为   OFF   时,对于双引号和单引号的使用,SQL   Server   遵循如下规则:           
  引号不能用于分隔标识符,而是用括号作为分隔符。              
  单引号或双引号可用于包含字符串。      
  如果使用双引号,嵌入的单引号不需要用两个单引号来表示:         
  SELECT   *   FROM   [My   Table]      WHERE   [Last   Name]   =   "O'Brien"         
  无论   QUOTED_IDENTIFIER   的设置如何,都可以在括号中使用分隔符。         
  分隔标识符规则    
  分隔标识符的格式规则是:           
  分隔标识符可以包含与常规标识符相同的字符数(1   到   128   个,不包括分隔符字符)。本地临时表标识符最多可以包含   116   个字符。    



          
  标识符的主体可以包含当前代码页内字母(分隔符本身除外)的任意组合。例如,分隔符标识符可以包含空格、对常规标识符有效的任何字符以及下列任何字符:   代字号   (~)   连字符   (-)      
  惊叹号   (!)   左括号   ({)        百分号   (%)   右括号   (})        插入号   (^)   撇号   (')        and   号   (&)   句号   (.)        左圆括号   (()   反斜杠   (\)        右圆括号   ())   重音符号   (`)   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值