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时,双引号被解释为字符串的边界,和单引号的作用是类似的。就是说双引号"不能当做标识符使用,但是可以当做字符边界,和单引号'的效果是一样样的。