SQL 中的设定规则 SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON

SQL 中的设定规则 SET ANSI_NULLS ON 和 SET QUOTED_IDENTIFIER ON

规则示例:

1
2
3
4
5
6
USE [SQLTable]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

1

SET ANSI_NULLS ON  //表示对空值(null)进行 等于(=)或不等于(<>)进行判断时,遵从 SQL-92 规则。

SET ANSI_NULLS OFF   //表示在对空值(null)进行 等于(=)或不等于(<>)比较时,不再遵从SQL-92的规则。

遵从SQL-92 规则:

  • 在进行条件判断 where column_name = NULL 时,即使是表中字段column_name中包含空值(null),该select查询语句返回的数据仍然是是空的或返回0行。
  • 在进行条件判断 where column_name <> NULL时,即使是表中字段column_name中包含非空值,该select查询语句返回的数据是空的或返回0行。

不遵从SQL-92 规则:

  • 在进行条件判断 where column_name = null 时,当column_name字段中包含了空值(null),该select查询语句会返回表中column_name 字段值为空(null)的数据行。
  • 在进行条件判断 where column_name <> null 时,当column_name字段中包含了非空值,该select 查询语句会返回表中column_name 字段值不为空的数据行。

 

简单点理解:

  • SET ANSI_NULLS ON  //忽略NULL 空/非空 值的判断
  • SET ANSI_NULLS OFF   //开启对空/非空 值(null)的判断,会返回空/非空值的判断,会显示空/不为空 的行数.

 

2

SET QUOTED_IDENTIFIER ON  //表示使用  引用标识符,标识符可以用双引号分隔,但是,文字必须用单引号分隔。

示例:

1
2
3
select "name","age" from Table1 where name = '滔Roy'
 select name,age from Table1 where name = '滔Roy' 

SET QUOTED_IDENTIFIER OFF  //表示标识符不能用双引号分隔,否则标识符会被当做字符串值来返回,不再是字符来返回。而且,文字部分必须用单引号或双引号分隔。

1
2
3
4
5
--标识符是不能用双引号来分隔的,否则标识符就会被当做是字符串来返回
select "name","age" from Table1 where name = '滔Roy' or name = "双引号"
 
--OK
select name,age from Table1 where name = '滔Roy' or name = "双引号" 

  

 

创建时间:2021.03.04  更新时间:

 

posted on   滔Roy  阅读(396)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2020-03-04 纯Javascript 实现的日历 ,在IE所有版本浏览器上测试通过,火狐、谷歌、360、QQ等浏览器均兼容,理论上均兼容所有浏览器

导航

点击右上角即可分享
微信分享提示