由双引号分隔的标识符可以是 Transact-SQL 保留关键字,或者可以包含 Transact-SQL 标识符语法规则通常不允许的字符。 语法SET QUOTED_IDENTIFIER { ON | OFF }注释当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引扮晌号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。 当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 ('') 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。 当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。 当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则喊洞计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列上的索引视图和索引所必需的 SET 选项设置的更多信息,请参见 SET 中的使用 SET 语句时的注意事项。 在进行连接时,SQL Server ODBC 驱动程序和用于 SQL Server 的 Microsoft OLE DB 提供程序自动将 QUOTED_IDENTIFIER 设置为 ON。这可以在 ODBC 数据源、ODBC 连接特性或 OLE DB 连接属性中进行配置。对来自 DB-Library 应用程序的连接,SET QUOTED_IDENTIFIER 设置默认为 OFF。 当创建存储过程时,将捕获 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 设置,用于该存储过程的后续调用。 当在厅渗锋存储过程内执行 SET QUOTED_IDENTIFIER 时,其设置不更改。 当 SET ANSI_DEFAULTS 为 ON时,将启用 SET QUOTED_IDENTIFIER。 SET QUOTED_IDENTIFIER 还与 sp_dboption 的 quoted identifier 设置相对应。如果 SET QUOTED_IDENTIFIER 为 OFF,则 SQL Server 使用 sp_dboption 的 quoted identifier 设置。有关数据库设置的更多信息,请参见 sp_dboption 和设置数据库选项。 SET QUOTED_IDENTIFIER 是在分析时进行设置的。在分析时进行设置意味着:SET 语句只要出现在批处理或存储过程中即生效,与代码执行实际上是否到达该点无关;并且 SET 语句在任何语句执行之前生效。 比较空值时必须小心。比较行为取决于选项 SET ANSI_NULLS 的设置。 当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为,未知值不能与其它任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。例如,当 ANSI_NULLS 为 ON 时,以下比较总是输出 UNKNOWN: ytd_sales NULL 只要变量包含 NULL 值,下列比较也输出 UNKNOWN: ytd_sales @MyVariable 使用 IS NULL 或 IS NOT NULL 子句测试 NULL 值。这将增加 WHERE 子句的复杂性。例如,表 Northwind Customers 中的 Region 列允许空值。如果使用 SELECT 语句不仅测试其它值还测试空值,则必须包括 IS NULL 子句: SELECT CustomerID, CompanyName, Region FROM Northwind.dbo.Customers WHERE Region IN ('WA', 'SP', 'BC') OR Region IS NULL Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。通过设置 ANSI_NULLS OFF 可将该选项激活。当 ANSI_NULLS 为 OFF 时,如果 ColumnA 包含空值,则比较操作 ColumnA = NULL 返回 TRUE;如果 ColumnA 除包含 NULL 外还包含某些值,则比较操作返回 FALSE。此外,两个都取空值的表达式的比较也输出 TRUE。当 ANSI_NULLS 设置为 OFF 时,SELECT 语句将返回 Customer 表中所有 Region 为空值的行: SELECT CustomerID, CompanyName, Region FROM Northwind.dbo.Customers WHERE Region = NULL 涉及 NULL 的计算均取值为 NULL,这是因为只要有一个因子为未知,结果肯定是 UNKNOWN。例如,如果 column1 为 NULL,则 column1 + 1 取值为 NULL。
相关文章
-
setTimeout用法
2023-05-05 14:20 阅读(579) -
什么是天翼云存储?
2023-05-05 08:21 阅读(610) -
query.setResultTransformer(Transformers)和query.setResultTransformer(CriteriaSpecification)
2023-05-05 03:15 阅读(580)