0

0

SQL语法 分隔符理解小结

php中文网

php中文网

发布时间:2016-06-07 17:59:16

|

1743人浏览过

|

来源于php中文网

原创

单引号和双引号之间的区别最早在SQL92标准中引入的。对于标识符,这个标准区分了常规标识符和分隔的标识符。

两者主要的区别在于:分隔的标识符被括在双引号中(Transact-SQL也支持方括号的使用:[标识符])并且是区分大小写的。单引号只用于字符串的定界。总的来说,引入分隔的标识符是为了对标识符进行规范,否则就会与保留字相同了。特别要提到的是,分隔的标识符能够使你在命名(标识符或变量的名字)的时候,免于使用在将来的SQL标准中可能出现的保留字。另外,分隔的标识符能够包含一些在通常的标识符名称中被视为不合法的字符,如空格。
在SQL SERVER中,双引号的使用由SET 语句中的QUOTED_IDENTIFIER选项来定义。如果这个选项被设为ON,则双引号中的标识符将被定义为一个分隔的标识符。在这种情况下,双引号不能被用于定界字符串。”
记住以下几句话就能把分隔符理解了
以上这段话是书上的原话,我对分隔的标识符的理解是:例如"hu","h u",[hu],
[ h u]这几个标识符都是不同的,在使用时就像使用a,b等标识符一样,只不过必须加上双引号或中括号,不知这样理解对不对。
我自己对分隔符的理解:分隔符就是为了起到分隔作用。 SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
自我分析:SELECT,FROM,where是关键字。"My Table"就是标志符,而””就是分隔符
请大虾们指教。
其实你理解的挺对的
但是别忘了它的作用是为了定义标识符
符合所有标识符格式规则的标识符可以使用分隔符,也可以不使用分隔符。
不符合标识符格式规则的标识符必须使用分隔符。
分隔标识符在下列情况下使用:
当在对象名称或对象名称的组成部分中使用保留字时。
推荐不要使用保留关键字作为对象名称。从 Microsoft® SQL Server™ 早期版本升级的数据库可能含有标识符,这些标识符包括早期版本中未保留而在 SQL Server 2000 中保留的字。可用分隔标识符引用对象直到可改变其名称。
当使用未被列为合法标识符的字符时。
SQL Server 允许在分隔标识符中使用当前代码页中的任何字符。但是,不加选择地在对象名称中使用特殊字符将使 SQL 语句和脚本难以阅读和维护。
Transact-SQL 所使用的分隔符类型:
说明 分隔符仅用于标识符。分隔符不能用于关键字,不论它们在 SQL Server 中是否被标记为保留字。
被引用的标识符用双引号 (") 分隔开:
SELECT * FROM "Blanks in Table Name"
括在括号中的标识符用方括号 ([ ]) 分隔:
SELECT * FROM [Blanks In Table Name]
仅当 QUOTED_IDENTIFIER 选项设置为 ON 时,被引用的标识符才有效。默认情况下,当用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序连接时,将 QUOTED_IDENTIFIER 设置为 ON。默认情况下,DB-Library 不将 QUOTED_IDENTIFIER 设置为 ON。不管使用何种接口,个别应用程序或用户可随时更改设置。SQL Server 提供了多种方法来指定该选项。例如,在 SQL Server 企业管理器和 SQL 查询分析器中,该选项可在对话中设置。在 Transact-SQL 中,可以使用 SET QUOTED_IDENTIFIER、sp_dboption 的 quoted identifier 选项或 sp_configure 的 user options 选项将此选项设为多种级别。
当 QUOTED_IDENTIFIER 为 ON 时,对于 SQL 语句中的双引号和单引号 (') 的使用,SQL Server 遵循 SQL-92 规则:
双引号只能用于分隔标识符,不能用于分隔字符串。
为保持与现有应用程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。
单引号必须用来包含字符串,不能用于分隔标识符。
如果字符串包含单引号,则需要在单引号前再增加一个单引号:
SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL Server 遵循如下规则:
引号不能用于分隔标识符,而是用括号作为分隔符。
单引号或双引号可用于包含字符串。
如果使用双引号,嵌入的单引号不需要用两个单引号来表示:
SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"
无论 QUOTED_IDENTIFIER 的设置如何,都可以在括号中使用分隔符。
分隔标识符规则
分隔标识符的格式规则是:
分隔标识符可以包含与常规标识符相同的字符数(1 到 128 个,不包括分隔符字符)。本地临时表标识符最多可以包含 116 个字符。
标识符的主体可以包含当前代码页内字母(分隔符本身除外)的任意组合。例如,分隔符标识符可以包含空格、对常规标识符有效的任何字符以及下列任何字符: 代字号 (~) 连字符 (-)
惊叹号 (!) 左括号 ({)
百分号 (%) 右括号 (})
插入号 (^) 撇号 (')
and 号 (&) 句号 (.)
左圆括号 (() 反斜杠 (\)
右圆括号 ()) 重音符号 (`)

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

43

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

35

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

41

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

204

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

9

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

8

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 1.9万人学习

SQL 教程
SQL 教程

共61课时 | 3.3万人学习

C++教程
C++教程

共115课时 | 10.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号