news 2026/4/24 12:27:59

SQL 中的大小写规则总结:关键字、函数名不区分大小写(建议大写),字符串值、日期格式符严格区分大小写

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 中的大小写规则总结:关键字、函数名不区分大小写(建议大写),字符串值、日期格式符严格区分大小写

SQL大小写规则总结:SQL关键字不区分大小写(建议大写),但字符串值、日期格式符严格区分大小写。


表名/列名在Oracle中默认转大写,MySQL通常不区分(受平台影响)。


使用双引号时对象名必须精确匹配大小写。


函数名(如TO_CHAR、NVL)和NULL关键字不区分大小写,但日期格式符必须大写。


最佳实践:关键字全大写,对象名统一大小写,避免使用双引号,字符串值保持存储时的大小写格式。


不同数据库的具体实现略有差异,建议遵循统一的代码规范以确保兼容性。


SQL中的大小写规则总结


SQL 大小写问题一览表,涵盖语法关键字、标识符(表名/列名)、字符串值、日期格式符等常见场景。


SQL 大小写规则总结表

类别是否区分大小写说明示例
SQL 关键字不区分SELECT、FROM、WHERE、AND、OR、NOT、ORDER BY 等,可大写、小写或混写,但惯例推荐大写以增强可读性。select * from emp;
SELECT * FROM EMP;
SeLeCt * FrOm Emp;✅(可行但极不规范)
表名、列名等对象名⚠️视数据库而定-Oracle / PostgreSQL / DB2:默认区分大小写,但会将未加引号的名称自动转为大写进行存储和比较。
-MySQL / SQL Server:默认不区分大小写,但受操作系统及排序规则影响,通常不强制。
-通用最佳实践统一使用大写或小写定义,查询时不加引号。
SELECT * FROM emp;(若表定义为EMP,则 Oracle 中emp会被转为EMP并找到)
SELECT * FROM "Emp";(Oracle 中必须精确匹配大小写,很少用)
字符串与日期值严格区分大小写存储在数据库中的字符串或日期字面量,等值比较时必须大小写完全匹配WHERE ENAME = 'SMITH'
WHERE ENAME = 'Smith'❌(查不到 'SMITH')
日期格式符严格区分大小写TO_CHARTO_DATE等函数中的格式代码必须使用大写,小写会被视为普通文本或报错。TO_CHAR(HIREDATE, 'YYYY-MM-DD')
TO_CHAR(HIREDATE, 'yyyy-mm-dd')❌(Oracle 报错)
列别名不区分大小写别名的名称本身不区分大小写,但显示时如需保留空格或大小写,需加双引号SELECT ENAME AS "Name"(显示为 Name)
SELECT ENAME AS name(显示为 NAME)
双引号内的内容严格区分大小写双引号用于强制保留标识符的大小写或支持特殊字符。一旦使用,查询时必须完全匹配。SELECT * FROM "EmpTable";(必须与创建时的命名完全一致)

分数据库详细行为表

数据库表名/列名(无引号)表名/列名(有双引号)字符串值关键字
Oracle自动转为大写,不区分大小写严格区分大小写区分大小写不区分
MySQL取决于操作系统和排序规则(Linux 下通常区分,Windows 下不区分),但建议统一严格区分大小写区分大小写不区分
SQL Server不区分大小写(默认排序规则)严格区分大小写区分大小写不区分
PostgreSQL自动转为小写,不区分大小写严格区分大小写区分大小写不区分

错误与正确示例对照表

场景❌ 错误示例✅ 正确示例
字符串匹配WHERE ENAME = 'smith'(表中存的是 'SMITH')WHERE ENAME = 'SMITH'
日期格式TO_CHAR(HIREDATE, 'yyyy-mm-dd')TO_CHAR(HIREDATE, 'YYYY-MM-DD')
对象名(Oracle)SELECT * FROM emp;(表定义时为EmpSELECT * FROM "Emp";(不推荐)
或创建时统一用大写:CREATE TABLE EMP
关键字风格select * from emp where deptno = 20(可读性差)SELECT * FROM EMP WHERE DEPTNO = 20
双引号别名SELECT ENAME AS "name"(却想显示为 'NAME')SELECT ENAME AS "NAME"

最佳实践速记表

建议说明
关键字全大写SELECTFROMWHEREORDER BY
表名、列名全大写(或全小写)统一风格,避免跨数据库问题,如EMPDEPTNO
字符串字面量保持原始大小写数据库中存的是什么样,查询就写什么样
日期格式符全部大写YYYY-MM-DD HH24:MI:SS
尽量避免使用双引号除非必须保留大小写或使用特殊字符
别名不加双引号(除非需要空格或大小写)AS 月薪AS "Monthly Salary"

一句话总结

关键字不区分大小写(建议大写),字符串和日期格式符严格区分大小写,对象名在 Oracle 中默认转大写,在 MySQL 中通常不区分但受平台影响,用双引号时则必须精确匹配。


补充:TO_CHAR()NULL及其他函数的大小写要求


以下是对上一份表格的补充内容,涵盖TO_CHAR()NULLNVL()等常用函数的大小写规则。


补充内容总结表

类别是否区分大小写说明示例
TO_CHAR() / TO_DATE()函数名不区分
格式符严格区分
函数名本身不区分大小写,但内部的日期格式符必须大写to_char(HIREDATE, 'YYYY-MM-DD')
TO_CHAR(HIREDATE, 'yyyy-mm-dd')
NULL不区分NULL是 SQL 关键字,可写nullNullNULL,但惯例全大写WHERE COMM IS NULL
WHERE comm is null
WHERE COMM IS Null✅(可行但不规范)
NVL() / NVL2()不区分函数名不区分大小写,参数内的逻辑遵循各自规则(列名不区分,字符串区分)。nvl(COMM, 0)
Nvl(comm, 0)
NVL(COMM, 0)
其他单行函数
(如SUBSTR()LENGTH()TRUNC()ROUND()等)
不区分函数名本身不区分大小写,推荐全大写保持风格统一。substr(ENAME, 1, 3)
SUBSTR(ENAME, 1, 3)
SubStr(ENAME, 1, 3)✅(可行但规范)
聚合函数
(如SUM()AVG()COUNT()MAX()MIN()
不区分函数名不区分大小写,推荐全大写count(*)
COUNT(*)
Count(*)

详细说明与示例

1.TO_CHAR()TO_DATE()的大小写规则

部分大小写规则正确示例错误示例
函数名不区分TO_CHARto_charTo_Char无(全接受)
日期格式符严格区分(必须大写)'YYYY-MM-DD HH24:MI:SS''yyyy-mm-dd hh24:mi:ss'
格式符中的文本不区分'"年"''"年"'均可

sql

-- ✅ 正确 SELECT TO_CHAR(HIREDATE, 'YYYY-MM-DD') FROM EMP; SELECT to_char(HIREDATE, 'YYYY-MM-DD') FROM EMP; -- ❌ 错误(格式符小写) SELECT TO_CHAR(HIREDATE, 'yyyy-mm-dd') FROM EMP; -- Oracle 报错:ORA-01821: 日期格式无法识别

2.NULL的大小写规则

NULL是 SQL 关键字,理论上不区分大小写,但强烈建议全大写以增强可读性。

sql

-- ✅ 均可执行,结果相同 SELECT * FROM EMP WHERE COMM IS NULL; SELECT * FROM EMP WHERE COMM IS null; SELECT * FROM EMP WHERE COMM IS Null; -- 以下写法虽能执行,但极不规范,避免使用 SELECT * FROM EMP WHERE COMM IS nUll;

最佳实践

sql

-- ✅ 推荐写法 WHERE COMM IS NULL WHERE COMM IS NOT NULL -- 配合 NVL 函数 SELECT NVL(COMM, 0) FROM EMP;

3.NVL()/NVL2()函数

sql

-- ✅ 以下写法均可 SELECT NVL(COMM, 0) FROM EMP; SELECT nvl(COMM, 0) FROM EMP; SELECT Nvl(comm, 0) FROM EMP; -- 推荐写法(统一大写) SELECT NVL(COMM, 0) AS 佣金 FROM EMP;

4. 其他常用函数速查

函数推荐写法可接受但不规范用途
SUBSTR()SUBSTR(ENAME, 1, 3)substr(ENAME, 1, 3)截取字符串
LENGTH()LENGTH(ENAME)length(ENAME)获取长度
TRUNC()TRUNC(SYSDATE)trunc(SYSDATE)截断日期
ROUND()ROUND(SAL, 0)round(SAL, 0)四舍五入
UPPER()UPPER(ENAME)upper(ENAME)转大写
LOWER()LOWER(ENAME)lower(ENAME)转小写

完整大小写规则汇总表

类别区分大小写?推荐写法说明
SQL 关键字(SELECT、WHERE)❌ 不区分全大写增强可读性
表名、列名(无引号)⚠️ 视数据库而定全大写Oracle 自动转大写,MySQL 视平台而定
表名、列名(有双引号)✅ 区分避免使用除非必须保留大小写或特殊字符
字符串值✅ 区分保持与存储一致'SMITH''smith'
日期格式符✅ 区分全大写'YYYY-MM-DD''yyyy-mm-dd'
函数名(TO_CHAR、NVL 等)❌ 不区分全大写保持风格统一
NULL❌ 不区分全大写标准写法
列别名(无引号)❌ 不区分按需命名会自动转大写(Oracle)
列别名(有双引号)✅ 区分按需命名保留大小写和空格

一句话补充总结

函数名(包括TO_CHARNVLSUBSTR等)和NULL关键字均不区分大小写,但日期格式符必须严格大写。


为保持代码规范和可读性,建议将所有关键字、函数名、格式符统一使用全大写。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 12:26:17

从零开始搭建个人博客(Hexo-Gatsby)

从零开始搭建个人博客:Hexo与Gatsby实战指南 在数字化时代,拥有一个个人博客不仅是记录思考的平台,更是展示技术能力的窗口。Hexo和Gatsby作为静态网站生成器的代表,凭借高效、灵活的特点成为开发者的热门选择。本文将带你从零开…

作者头像 李华
网站建设 2026/4/24 12:21:20

AI实验箱厂家推荐2026指南,选对伙伴建好实验室

选AI实验箱厂家,怕设备买来成摆设、课程跟不上、服务没保障?这确实是当前学校建设人工智能实验室时最普遍的困扰。据中国教育装备行业协会《2026年中小学人工智能教育装备发展报告》显示,2026年国内AI教育装备市场规模预计突破120亿元&#x…

作者头像 李华
网站建设 2026/4/24 12:18:44

如何免费解锁八大网盘满速下载:LinkSwift网盘助手完整指南

如何免费解锁八大网盘满速下载:LinkSwift网盘助手完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …

作者头像 李华
网站建设 2026/4/24 12:17:26

三月七小助手:崩坏星穹铁道全自动游戏助手完全指南

三月七小助手:崩坏星穹铁道全自动游戏助手完全指南 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 你是否厌倦了每天重复刷材料、清体力的枯燥操作&#…

作者头像 李华
网站建设 2026/4/24 12:17:25

3个实战技巧解决Windows上Hadoop开发环境配置难题

3个实战技巧解决Windows上Hadoop开发环境配置难题 【免费下载链接】winutils 项目地址: https://gitcode.com/gh_mirrors/winu/winutils 你是否曾经在Windows上配置Hadoop开发环境时,被那些复杂的原生库问题搞得焦头烂额?😅 让我告诉…

作者头像 李华
网站建设 2026/4/24 12:16:35

不平衡多分类问题实战:大肠杆菌蛋白质定位预测

1. 项目概述:不平衡多分类问题的现实挑战在生物信息学和微生物学研究领域,大肠杆菌(Escherichia coli)蛋白质定位预测是一个经典但极具挑战性的机器学习任务。这个数据集包含8个不同位置的蛋白质样本,但各类别样本数量…

作者头像 李华