SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON

2024-05-01

所以我在创建脚本时一直盲目地使用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'默认情况下:

Stored-Procedure-Template-SSMS2015 1. SET ANSI_NULLS 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,我们使用关键字'一片空白'.

2. 将 QUOTED_IDENTIFIER 设置为 ON:

简而言之,当你这样做时SET QUOTED_IDENTIFIER ON您可以使用 SQL 标识符或 SQL 中的保留关键字作为用户定义的对象。它must在双引号内定义,因此得名QUOTED_IDENTIFIER.

考虑一种情况,您希望列名称为“Identity”。但 Identity 是 SQL Server 的关键字。它将如何区分用户引用的 Identitiy 或 T-SQL 引用的 Identity。这就是引用标识符派上用场的地方。

当 SET QUOTED_IDENTIFIER 为 ON(默认)时,所有用双引号分隔的字符串都被解释为对象标识符。因此,带引号的标识符不必遵循 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。

如需参考,请参阅:

  • 设置 ANSI_NULLS、NOCOUNT 和 QUOTED_IDENTIFIER。 https://www.sqlservercentral.com/blogs/set-ansi_nulls-nocount-and-quoted_identifier
  • SET 语句 (Transact-SQL) https://learn.microsoft.com/en-us/sql/t-sql/statements/set-statements-transact-sql?view=sql-server-ver15
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON 的相关文章

随机推荐

  • 估计/选择 DBSCAN 的最佳超参数

    我需要根据不同介词的分布找到自然出现的名词类别 如施事 工具 时间 地点等 我尝试使用 k means 聚类 但帮助较少 效果不佳 我正在寻找的类有很多重叠 可能是因为类的非球状形状和 k means 中的随机初始化 我现在正在使用 DBS
  • Flutter Redux 和 Hook。如何像react一样观察useEffect内部变量实例的变化?

    我是 flutter 新手 试图观察像 React Native 这样处于减速器状态的变量 count 我使我的 redux 和 hook 工作完美 屏幕上的变量计数发生变化 但如果我更改操作 则永远不会再次调用 useEffect 仅一次
  • 使用桌面 Appium 应用程序在模拟器上打开并崩溃

    测试环境 用于运行 Appium 的桌面操作系统 版本 版本 1 2 0 beta 3 1 2 0 beta 3 Node js 版本 除非使用 Appium app exe 测试移动平台 版本 ios模拟器 iPhone 6s 10 2
  • Bash 脚本 Mysql 警告:在命令行界面上使用密码可能不安全

    你好 我有一个脚本来对一些 mysql 数据库进行分区 我们正在从 5 5 升级到 5 6 在测试脚本时 我注意到新的 5 6 版本 mysql 返回Warning Using a password on the command line
  • Swift - 检查日期是否在下周/下个月。 ( isDateInNextWeek() isDateInNextMonth() )

    我们在日历中有这些方便的功能 let calendar NSCalendar currentCalendar calendar isDateInToday date calendar isDateInTomorrow date 但我缺少那两
  • 模拟器在 AQMEIOManager 上崩溃

    尝试播放音频时模拟器崩溃 13 22 14 211 App 2965 5603 lt 0xb03e7000 gt Error obj trying to fetch default input device s sample rate 13
  • mailto 的语法

    当使用这样的 mailto 链接时 a href title Subject Link Text a 是否可以设置 FROM 地址 更新 我忘了提及 我有一群忠实的受众 他们都将使用 IE8 和 Outlook 不幸的是 事实并非如此 您只
  • 计算 IOrderedEnumerable 的数量而不消耗它

    我想做的 简短版本 var source new 2 4 6 1 9 OrderBy x gt x int count source Count lt get the number of elements without performin
  • 使用 MVVM 为 WPF 搭建脚手架?

    谁能告诉我是否可以 如果存在某些实用程序 创建考虑到 MVVM 和 WPF 的脚手架 我的想法是我似乎有很多数据访问表单 当然我想自定义它们 但最初我想要一种快速提供表单的方法 即放置在它们上面并绑定到 mvvm 的所有控件 也许我问得很多
  • javascript单线程时onreadystatechange的调用者是谁?

    好吧 我是 javascript 的新手 听说它是单线程的 在我看来 如果您发出异步请求 它应该启动一个自己的线程来控制服务器是否已经响应 这在 JavaScript 中不起作用 我在想是否有一些内置机制可以保存所有侦听器并调用它们 具体取
  • 在github原子编辑器中隐藏隐藏(点)文件

    我对 Github Atom 编辑器非常陌生 它总是显示隐藏文件 例如 git sass在侧窗格中 如何在atom编辑器的侧窗格中隐藏隐藏文件 点文件 编辑 gt 首选项 gt 包 在 已安装的软件包 下面的字段中 输入 树视图 该软件包有
  • 在 Java 中打印 HashMap

    我有一个HashMap private HashMap
  • 复制cordova 2.2.0 .jar

    我需要新的 jar 文件来升级到 cordova 2 2 0 但我在哪里可以找到它呢 我必须生成它吗 如何生成 多谢 您可以从以下位置下载 PhoneGap GitHub 存储库 https github com phonegap phon
  • 如何在java中使用cypher加载CSV文件?

    我是密码新手 我想在java中使用cypher加载csv 我用谷歌搜索并找到了以下作品 LOAD CSV WITH HEADERS FROM http neo4j com docs 2 3 1 csv import movies csv A
  • aws cli 中的 SSL CERTIFICATE_VERIFY_FAILED

    我安装了AWS CLI http docs aws amazon com cli latest userguide installing html install msi on windows在 Windows Server 2007 32
  • 使用 Peewee 追溯创建索引?

    有没有办法用 Peewee 追溯索引 sql 文件的列 即初始规范未建立索引的情况 询问是因为执行所有插入然后建立索引应该更快 而不是相反 有没有办法用 Peewee 追溯索引 sql 文件的列 Yes Pewee s http docs
  • jax-rs ContextResolver 理解

    但我试图了解 jax rs 中 Provider 的用法 但无法理解如何使用 ContextResolver 有人可以用一些基本的例子来解释这一点吗 您将看到它在解析序列化上下文对象时被大量使用 例如一个ObjectMapper用于 JSO
  • 将电子邮件签名添加到电子邮件通知脚本

    我正在 Google Apps 脚本上编写一段代码 以便每次在我的网站上发布新公告时发送电子邮件 这是供参考的代码 var url of announcements page https sites google com announcem
  • 如何在 Python 中使用 PIL 将一张图像合成到另一张图像上?

    我需要拍摄一张图像并将其放置到新生成的白色背景上 以便将其转换为可下载的桌面壁纸 所以这个过程是这样的 生成尺寸为 1440x900 的新的全白图像 将现有图像放在顶部居中 另存为单张图像 在 PIL 中 我看到ImageDraw对象 但没
  • SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON

    所以我在创建脚本时一直盲目地使用ansi nulls on quoted identifier on 因为sqlserver在编写对象脚本时会自动生成它们 我真的没有时间关心这些琐碎的废话 但我想必须提出这些问题 鉴于这些是推荐的设置 是否