- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我一直在创建脚本的时候盲目地使用ansi_nulls on,quoted_identifier on,因为sqlserver在脚本化对象的时候会自动生成它们..
我真的没有时间关心这些琐碎的废话 :-) 但我想这些问题必须要问。
鉴于这些是推荐的设置,是否有一个选项可以设置为 (a) 每个数据库,和 (b) 每个服务器,以便它们在默认情况下始终处于打开状态,而不是通过单独的脚本设置?
如果是这样,如何/在哪里可以查看当前的默认设置?
最佳答案
当您希望使用 SQL Server Management Studio(SSMS) 2015 Express 创建一个新的 SP 时,它会生成一个类似于以下片段的模板,其中包含语句 'SET ANSI_NULLS ON'
,' SET QUOTED_IDENTIFIER ON'
,'SET NOCOUNT ON'
默认:
当 ANSI_NULLS 为 ON 时,使用 WHERE column_name = NULL 的 SELECT 语句返回零行,即使 column_name 中有空值也是如此。根据 ANSI(美国国家标准协会) 执行的任何比较或计算与 NULL 是 NULL。 NULL 既不是字符串也不是数字也不是零。它只是未定义。所以,当我执行 SET ANSI_NULLS ON
时;我只是告诉 SQL SERVER 遵循 ANSI 的标准。
当 ANSI_NULLS 设置为 ON 时。 ‘=’运算符无法识别 NULL。这是 ANSI 的标准,任何与 NULL 的比较总是 NULL。所以你永远不会为此得到结果。要在列中查找 NULL,我们使用关键字 ‘IS NULL’。
<强>2。将 QUOTED_IDENTIFIER 设置为:
简单来说,当您执行 SET QUOTED_IDENTIFIER ON
时,您可以使用 SQL 标识符或 SQL 中的保留关键字作为用户定义的对象。它必须在双引号内定义,因此名称为QUOTED_IDENTIFIER。
考虑一种情况,您希望列名称为“Identity”。但是 Identity 是 SQL Server 的关键字。它将如何区分用户引用的身份或 T-SQL 引用的身份。这就是引用标识符派上用场的地方。
当 SET QUOTED_IDENTIFIER 为 ON(默认)时,所有由双引号分隔的字符串都被解释为对象标识符。因此,带引号的标识符不必遵循标识符的 Transact-SQL 规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许使用的字符。
引用资料请引用:
关于SQL SERVER 和 SET ANSI_NULLS ON,SET QUOTED_IDENTIFIER ON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54765112/
我想将 MySQL 数据库连接到 Assure Id 2009 软件。当我导入 SQL 文件时,出现如下错误: 未知的系统变量“ANSI_NULLS” 我的 SQL 是这样的: SET ANSI_NU
我想检查@a是否与“ ansi_nulls off”中的@b不同: set ansi_nulls off declare @a int = 1; declare @b int = null; sele
我写了一个触发器。 USE [TEST] GO /****** Object: Trigger [dbo].[TR_POSTGRESQL_UPDATE_YC] Script Date: 05/
在我们的数据库中有一个使用 ANSI_NULLS OFF 创建的表。 .现在我们已经使用这个表创建了一个 View 。我们想为这个 View 添加一个聚集索引。 在创建聚集索引时,它显示了一个错误,例
在运行一些查询之前,我必须设置 ANSI_NULLS 和其他一些数据库选项。所以在我的代码中 const string query_prefix = "SET ANSI_NULLS ON \n GO
我有一个问题,我们总是说 null =null 是假的,我想知道当 ansi_nulls 关闭时,这个声明“null=null”也是假的?谢谢 最佳答案 当 ANSI_NULLS OFF 时,NULL
SET ANSI_NULLS ON; -- Query1 SELECT 'StackOverFlow' AS Statement11 WHERE 'Name' IN ('S','Q', 'L', 'N
我今天正在处理 10 多年前编写的旧 Delphi 应用程序。部分应用程序包含将在应用程序中构建更新语句然后将它们发送到 SQL Server 以运行的组件。 我需要做的工作是尝试加快一些查询的速度。
我们在 ANSI_NULLS 设置和计算列方面存在一些问题,并且我们有大量的存储过程 SET ANSI_NULLS OFF 我们想将它们全部更改为 SET ANSI_NULLS ON 有没有一种简单的
SET ANSI_NULLS OFF 的作用是什么? 最佳答案 From MSDN: The SQL-92 standard requires that an equals (=) or not eq
我会认为 SET ANSI_NULLS OFF 模式非常方便,如果它始终如一地工作,我会默认使用它 - 允许在任何地方使用 = 或 != 来比较空值。但只有当我与显式内联 null 进行比较时它才有效
我想调用这个发送一个值的过程,该值可以是 NULL 或任何 int 值。 SELECT DomainName, DomainCode FROM Tags.tblDomain WHERE SubDoma
SET ANSI_NULLS OFF 似乎在 TSQL 中给出不同的结果,具体取决于您是比较表中的字段还是值。谁能帮助我理解为什么我的最后两个查询没有结果?我不是在寻找解决方案,只是在寻找解释。 se
定义说: When SET ANSI_NULLS is ON, a SELECT statement that uses WHERE column_name = NULL returns zero r
注意:我检查了 Understanding QUOTED_IDENTIFIER它没有回答我的问题。 我让我的 DBA 运行我在 Prod 服务器上创建的索引(他们查看并批准了它)。 它像我想要的那样加
所以我一直在创建脚本的时候盲目地使用ansi_nulls on,quoted_identifier on,因为sqlserver在脚本化对象的时候会自动生成它们.. 我真的没有时间关心这些琐碎的废话
documentation指出数据库 ANSI_NULLS 标志控制在某些方面与 null 进行比较的行为。 我在查 this stack overflow post检查如何确定(未设置)此标志的值。
我可以更改 SET ANSI_NULLS 的值通过使用 SET ANSI_NULLS OFF或 SET ANSI_NULLS ON 问题 #1 如何获得当前值? 问题 #2 设置值是否应用于查询? t
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在搜索 ansi_nulls 时,我偶然发现了这篇文章,其中说 MySQL 没有实现 ansi_nulls,并且 MsSql 计划删除它:something about ansi_nulls 微软在2
我是一名优秀的程序员,十分优秀!