SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
请有人解释我们为何使用上述陈述。
答案 0 :(得分:1)
此设置可以使用等于运算符而不仅仅是NULL
运算符进行IS [NOT] NULL
比较。
-- when ON this is perfectly valid comparison
Col = NULL
-- when OFF only this is valid
Col IS NULL
来自MSDN / Books在线的这个例子将阐明这一点:
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
答案 1 :(得分:1)
MSDN是你的朋友:
ANSI:http://msdn.microsoft.com/en-us/library/ms188048.aspx
QUOTED_IDENTIFIER:http://msdn.microsoft.com/en-us/library/ms174393.aspx
答案 2 :(得分:0)
答案 3 :(得分:0)
创建或更改查询分析器中的存储过程,用户定义函数等SQL对象时,会使用以下带有前缀和后缀的SQL命令创建它。
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO--SQL PROCEDURE, SQL FUNCTIONS, SQL OBJECTGO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
ANSI NULL ON / OFF: 此选项指定ANSI NULL比较的设置。启用此选项后,任何将值与null进行比较的查询都将返回0.禁用时,将值与null进行比较的任何查询都将返回空值。
QUOTED IDENTIFIER ON / OFF: 此选项指定双引号的使用设置。启用此选项后,双引号将用作SQL Server标识符(对象名称)的一部分。这在标识符也是SQL Server保留字的情况下非常有用。