当前位置: 代码迷 >> Sql Server >> SET QUOTED_IDENTIFIER OFF 的作用是什么?该怎么处理
  详细解决方案

SET QUOTED_IDENTIFIER OFF 的作用是什么?该怎么处理

热度:85   发布时间:2016-04-24 19:47:17.0
SET QUOTED_IDENTIFIER OFF 的作用是什么?
SET QUOTED_IDENTIFIER OFF 的作用是什么
默认是on 还是 off
如果设成off会有什么影响?

------解决方案--------------------
A. 使用加引号的标识符设置和保留字对象名
以下示例显示 SET QUOTED_IDENTIFIER 设置必须为 ON,而且表名内的关键字必须在双引号内,才能创建和使用具有保留关键字名称的对象。

 复制代码 
SET QUOTED_IDENTIFIER OFF
GO
-- An attempt to create a table with a reserved keyword as a name
-- should fail.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL);
GO

SET QUOTED_IDENTIFIER ON;
GO

-- Will succeed.
CREATE TABLE "select" ("identity" INT IDENTITY NOT NULL, "order" INT NOT NULL);
GO

SELECT "identity","order" 
FROM "select"
ORDER BY "order";
GO

DROP TABLE "SELECT";
GO

SET QUOTED_IDENTIFIER OFF;
GO
 

------解决方案--------------------
我复制联机丛书的,说明的听清楚吧。
------解决方案--------------------
默认是off的,这个可以通过如下的语句,来查询:

--0表示off,1表示on
select name,is_quoted_identifier_on
from sys.databases


设为ON:标识符可以用双引号分隔,而字符串还是用过单引号来分隔的:
SET QUOTED_IDENTIFIER on
go

create table "table"(a int)


------解决方案--------------------
当在数据库中新建一个名字是USER的表的时候,常常会带来一些麻烦,因为USER是SQL中的关键字,但是上面的几个语句不会报错。再说一个概念:标示符是SQL中的中括号[]。

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

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