当前位置: 首页 > news >正文

SQL 中单引号与双引号的使用要求(严格区分)

SQL中单引号和双引号使用有严格区分:单引号用于包裹字符串、日期等数据值,必须使用且不能混用双引号;


双引号主要用于包裹含特殊字符、空格或保留关键字的对象名(表名、列名、别名),在Oracle中还可保留对象名大小写。


单引号内如需使用单引号需用两个单引号转义。


不同数据库对双引号处理略有差异,建议统一使用单引号处理数据值,仅在必要时使用双引号处理对象名,以保持SQL语句的规范性和可移植性。


SQL中单引号与双引号的使用要求

Oracle / MySQL / SQL Server等主流数据库中,单引号和双引号有严格区别,不能混用。


一、核心规则

符号用途说明
单引号''包裹字符串、日期、字符型数据必须使用,不能用双引号替代
双引号""包裹对象名(表名、列名、别名)主要用于区分大小写、特殊字符或关键字

二、单引号的使用(必须掌握)

1. 字符串值必须用单引号

sql

-- ✅ 正确 SELECT * FROM EMP WHERE ENAME = 'SMITH'; SELECT * FROM EMP WHERE JOB = 'CLERK'; -- ❌ 错误(双引号包裹字符串) SELECT * FROM EMP WHERE ENAME = "SMITH"; -- Oracle报错

2. 日期比较时,字符串格式日期用单引号

sql

-- ✅ 正确 WHERE TO_CHAR(HIREDATE, 'YYYY') = '1981'; WHERE HIREDATE < TO_DATE('19810501', 'YYYYMMDD'); -- ❌ 错误 WHERE TO_CHAR(HIREDATE, 'YYYY') = 1981; -- 类型不匹配(虽然可能隐式转换)

3. 单引号内的单引号需要转义(两个单引号表示一个)

sql

-- 查询名字中包含单引号的员工,例如 O'Brian SELECT * FROM EMP WHERE ENAME = 'O''Brian'; -- ↑↑ 两个单引号表示一个单引号

三、双引号的使用(特定场景)

1. 别名包含空格或特殊字符时

sql

-- ✅ 双引号包裹含空格的别名 SELECT ENAME AS "Employee Name" FROM EMP; -- ✅ 双引号包裹中文别名(某些数据库需要) SELECT ENAME AS "姓名", SAL AS "薪资" FROM EMP; -- ❌ 不加双引号会报错 SELECT ENAME AS Employee Name FROM EMP; -- 空格导致语法错误

2. 对象名区分大小写(Oracle 特殊要求)

Oracle 默认将对象名转为大写,使用双引号可以保留原始大小写:

sql

-- 创建时使用双引号保留小写 CREATE TABLE "myTable" (id NUMBER); -- 查询时必须使用双引号且大小写匹配 SELECT * FROM "myTable"; -- ✅ 正确 SELECT * FROM myTable; -- ❌ 错误,Oracle 会找 MYTABLE

3. 使用保留关键字作为对象名

sql

-- 使用双引号包裹关键字 SELECT * FROM "USER" WHERE "ROWNUM" < 10;

四、对比总结表

场景正确用法错误示例
字符串值'SMITH'"SMITH"
日期字符串'1981-05-01'"1981-05-01"
普通别名AS 姓名AS "姓名"无特殊要求
含空格别名AS "Employee Name"AS Employee Name
中文别名AS "姓名"(推荐)AS 姓名(部分数据库可用)
表名/列名一般不用引号特殊场景才用双引号

五、你作业中的相关错误

第10题的问题:

sql

-- 您的写法(可能报错) ORDER BY ename asc,年薪 desc; -- ✅ 正确写法(加双引号) ORDER BY ename ASC, "年薪" DESC; -- ✅ 或避免使用中文别名排序 ORDER BY ename ASC, (sal + NVL(comm,0)) * 12 DESC;

六、快速记忆口诀

字符串用单引号,对象名用双引号
单引号里套单引号,两个单引号少不了
双引号别乱用,大小写空格关键字才用到


七、各数据库差异说明

数据库双引号行为单引号行为
Oracle区分大小写对象名标准用法
MySQL默认不区分,需配置标准用法("也可用sql_mode控制)
SQL Server区分大小写(取决于排序规则)标准用法
PostgreSQL严格区分大小写标准用法

最佳实践:统一使用单引号包裹字符串和日期,尽量避免使用双引号(除非必要),保持SQL简洁可移植。

http://www.jsqmd.com/news/690437/

相关文章:

  • 百度网盘直链解析工具:告别龟速下载,重获下载自由
  • 【独家逆向分析】某头部云厂商未开源的C++ MCP网关内核:如何用constexpr AST解析+编译期路由分片实现微秒级转发延迟?
  • DS4Windows技术解码:让PS手柄在PC平台重获新生
  • SQL 中日期的特殊性总结
  • python lxml
  • 谷歌 AI 会议记录功能大拓展:Gemini 支持线下及 Zoom、Teams 会议摘要生成
  • SCI 论文 Results 中 100 + 学术句式(2)
  • 深度学习 —— 学习率衰减策略
  • 别再只会按AutoSet了!手把手教你玩转泰克MSO2000B示波器的触发与采样设置
  • ESP32开发板安装终极指南:从零开始快速上手Arduino-ESP32
  • 新手也能一键部署 OpenClaw,这次真的超级简单
  • nli-MiniLM2-L6-H768惊艳效果:小模型在中文法律文本NLI任务上超越BERT-base
  • 2026年3月头部上海景观设计公司推荐,地产景观设计/屋顶花园设计/私家花园设计,上海景观设计施工团队选哪家 - 品牌推荐师
  • COMSOL声学超材料实证研究
  • “谁弄坏的不好说”:什么时候,信任成了被收割的盲目?
  • 【限时技术白皮书】:Docker 27低代码集成性能压测报告(23类低代码引擎+8大PaaS平台横向对比,仅开放72小时)
  • NVIDIA Audio2Face:AI语音驱动面部动画技术解析
  • 财务外包 vs 自建财务:老板该怎么选?
  • 管道疏通技术选型指南 主流服务品牌实测对比 - 优质品牌商家
  • 四川钢材市场螺纹钢(热轧带肋钢筋)现货批发 - 四川盛世钢联营销中心
  • Figma中文插件终极教程:3分钟让英文界面秒变中文,设计师必备效率神器!
  • 告别误触发!用滞回比较器给电源监控电路加个‘防抖’功能(附RC延时设计)
  • 保姆级教程:当Visio弹出激活向导时,如何一步步排查并卸载错误的密钥
  • 大规模图神经网络训练优化:WholeGraph技术实践
  • 【完整源码+数据集+部署教程】苹果品种分割系统源码&数据集分享 [yolov8-seg-C2f-RFCAConv&yolov8-seg-C2f-DCNV3等50+全套改进创新点发刊_一键训练教程_W
  • Hugging Face开源AI生态:从入门到实战指南
  • MySQL 同步到目标库后,怎么确认数据一致?NineData 的同步与比对方案
  • 2026年Q2国内购房移民机构合规服务能力排行 - 优质品牌商家
  • 别盲目卷算法,普通程序员入局大模型正确姿势
  • LNMP架构里,Nginx和PHP-FPM到底是怎么‘谈恋爱’的?一次讲清FastCGI通信原理与调优