SQL点滴之SET QUOTED_IDENTIFIER OFF语句的作用

数据库 SQL Server
SET QUOTED_IDENTIFIER使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。

编者注SET QUOTED_IDENTIFIER

使 Microsoft® SQL Server™ 遵从关于引号分隔标识符和文字字符串的 SQL-92 规则。由双引号分隔的标识符可以是Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。

先看下面几个sql语句

  1. SET QUOTED_IDENTIFIER ON 
  2. SELECT * FROM "USER"    WHERE a='netasp'   
  3.    
  4. SET QUOTED_IDENTIFIER ON 
  5. SELECT * FROM [USERWHERE a='netasp'   
  6.  
  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是SQL中的关键字,但是上面的几个语句不会报错。再说一个概念:标示符是SQL中的中括号[]。

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

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

可以做一个总结:当SET QUOTED_IDENTIFIER ON " "等同于[ ] 表示数据库对象;当SET QUOTED_IDENTIFIER OFF " "等同于' '表示字符串边界;还有这里的双引号" 并不是两个单引号'合起来的,是shift+”打出来的,初学者可能会犯这样的错误。
 

原文链接:http://www.cnblogs.com/tylerdonet/archive/2010/08/01/1789979.html

【编辑推荐】

  1. SSIS中的容器和数据流—数据转换
  2. MySQL数据库的优化(上)单机MySQL数据库的优化
  3. MySQL数据库的优化(下)MySQL数据库的高可用架构方案
  4. SSAS中不同维度不同聚合的解决
  5. 给数据减肥 让MySQL数据库跑的更快
责任编辑:艾婧 来源: 博客园
相关推荐

2011-08-02 13:04:40

SQL Server

2011-09-09 10:10:13

SQL数据库点滴

2011-04-27 16:34:06

withSQL Server

2011-04-28 09:49:56

SQLwith子查询

2011-06-23 14:00:51

SQL点滴

2011-10-09 16:40:50

T-SQL

2011-04-21 10:06:40

SQL筛选

2011-05-11 09:49:32

线程等待SQL Server

2011-09-13 10:25:05

数据库点滴

2011-04-27 14:27:11

SQL Server

2011-04-27 16:09:48

SQL ServerSSIS

2011-08-03 13:32:00

SQL Server优化

2010-09-08 15:51:53

SQL语句where

2011-04-22 15:00:22

SQLwin7登录

2011-04-21 13:49:29

dementionSQL

2011-05-06 16:36:48

SQL备份还原

2011-04-20 11:34:07

SQL字符串分割

2018-11-05 14:54:18

MySQLSQL语句数据库

2011-02-25 17:00:25

SQL闰年

2011-04-27 13:21:59

SQL Serverattach
点赞
收藏

51CTO技术栈公众号