Set ANSI_NULLS ; SET Quoted_Identifier ON

   SQL-92 标准的由来:

  “ SQL"   的名称是   Structured   Query   Language(结构化查询语言)的缩写。   在   1974   年,Donald   Chamberlin   和其他人在   IBM   的研究所定义了语言   SEQUEL   (Structured   English   Query   Language)(结构化英语查询语言)。   这种语言在   1974-75   年首先在一种叫   SEUEL-XRM   的   IBM   的原型里面实现。   到了1976-77   年,定义了一种叫   SEQUEL/2   的   SEQUEL   改进版,   并且名称也因此改成   SQL。    
   
  在   1977   年,IBM   开发了一种新的叫   System   R   的原型语言。   System   R   实现了   SEQUEL/2   (现在的   SQL)的很大一部分子集,并且在项目过程中对   SQL   做了许多修改。   System   R   被安装到了许多用户节点上,   包括   IBM   的节点和许多经过选择的客户节点上。   多亏了在   System   R   那些用户节点上的成功,IBM   开始开发基于   System   R   技术的   SQL   语言的商业产品。    
   
  再过了一年,IBM   和许多其他提供商宣布了许多   SQL   产品,例如   SQL/DS(IBM),   DB2(IBM),   ORACLE(Oracle   Corp.),   DG/SQL(Data   General   Corp.),   和   SYBASE(Sybase   Inc.).    
   
  SQL   现在还是一个官方标准。在   1982   年,美国国家标准局   (ANSI)公布了数据库委员会宪章(DatabaseCommittee)X3H2,   建议发展一种标准的关系语言。   这个建议在   1986   年被批准并且认为实际上就是   IBM   版本的   SQL。在   1987   年,这个ANSI   标准也被国际标准化组织   (ISO)接受为国际标准。这个最初的   SQL   版本的标准经常非正式的被称为   "SQL/86".   到了   1989   年,对那个最初的标准进行了扩展,   并且这个新的标准被经常地非正式的称为"SQL/89"。   同样在   1989   年,一个相关的标准,发展了称之为   数据库语言嵌入SQL   (Database   LanguageEmbedded   SQL)   (ESQL)。    
   
  ISO   和   ANSI   委员会已经在一个大大地扩展了最初的标准的新版本的定义上工作了好几年,   常被非正式的称之为   SQL2   和   SQL/92   。这个版本成为一个批准了的标准   -   "International   Standard   ISO/IEC   9075:1992,   Database   Language   SQL   -   在1992   年晚些时候。   SQL/92   通常是人们说   "SQL标准"   时所指的版本。在   Date   and   Darwen,   1997里有   SQL/92   详细的描述。

 

 

    (1)SQL-92 标准要求在对null 值进行等于(=)或者不等于(<>)的时候取值FALSE。当 set Ansi_null 为 on 的时候,即使这一个column 中包含空值,使用select where column_name=null 返回的也是零,即使这一列column 不包含空值,使用 select column<>

null 返回的也是零。

 

   (2) 当set ANSC_NULL 设置为off 的时候,规则不尊从sql-92 标准,当 select where column=null 的时候,返回=null 的列。

当<>null 的时候,返回不等于null 的列。

 

   讨论一下is null 和=null ,is not null 和<> null 的区别

   (1) 当 set ansi_nulls  on 的时候 ;

     where column  is null  返回 为null 的值。where column is not null 的时候返回不为空的值

     where column=null  和 where column <>null 返回的都是零

    (2) 当 set ansi_null off 的时候:

     where column is null 和 where column =null 返回的结果是一样的。

     where column is not null 和where column <> null 返回的结果是一样的。

 

  (3) SET QUOTED_IDENTIFIER ON 的时候 标识符由双引号分割,文字用单引号分割。

          
            select * from  color_dup where "colorcode"='01W'

            当SET QUOTED_IDENTIFIER ON 的时候 标识符 colorcode 可以用双引号分割,或者不加双引号,用单引号的话返回的是空的。

             o1W必须用单引号括起来。     

 

 

    (4)       SET QUOTED_IDENTIFIER OFF的时候,标识符不可以加引号,且必须符合所有 Transact-SQL 标识符规则

          当set quoted_identifier off  的时候 标识符不可以加引号,文字可以用单引号和双引号。
              select * from  color_dup where colorcode='01W'
              select * from  color_dup where colorcode="01W"

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值