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 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目
2020-03-04 纯Javascript 实现的日历 ,在IE所有版本浏览器上测试通过,火狐、谷歌、360、QQ等浏览器均兼容,理论上均兼容所有浏览器