常用 SQL 转义符的总结

常用 SQL 转义符一览表

字符 转义方法 示例 适用场景 数据库差异说明
单引号 ' ''(双单引号)或 CHR(39) 'It''s a test' 字符串内包含单引号 通用(MySQL、SQL Server、Oracle等)
双引号 " ""(双引号)或 CHR(34) SELECT "column""name" FROM "table" 包含空格/保留字的字段名或表名 主要用于 Oracle、PostgreSQL
反斜杠 \ \\(双反斜杠)或 CHR(92) 'C:\\Program Files\\' 路径、正则表达式中的转义 MySQL、PostgreSQL(需配置参数)
百分号 % \%(反斜杠转义)或 CHR(37) LIKE '100\%' ESCAPE '\' LIKE 模糊查询中匹配百分号本身 通用(需配合 ESCAPE 关键字)
下划线 _ \_(反斜杠转义)或 CHR(95) LIKE 'foo\_bar' ESCAPE '\' LIKE 模糊查询中匹配下划线本身 通用
美元符号 $ $$(双美元符号)或 CHR(36) '$${variable}$$' 字符串内保留 ${} 结构 PostgreSQL、TDSQL-PG
方括号 [ ] [[]](双左/右括号)或 CHR(91)/CHR(93) SELECT [column[name]] FROM [table] SQL Server 中字段名包含特殊字符 SQL Server 特有
换行符 \n(反斜杠转义)或 CHR(10) 'Line1\nLine2' 字符串内换行 MySQL、PostgreSQL
制表符 \t(反斜杠转义)或 CHR(9) 'Name\tAge' 字符串内制表符 MySQL、PostgreSQL
& 符号 & CHR(38) 'AT&T' → `'AT' CHR(38)

补充说明

  1. CHR() 函数的优势

    • 通过 ASCII 码直接生成字符,完全避免符号被解析为语法元素(如 CHR(36) 生成 $)。

    • 适用于动态 SQL 拼接或需硬编码特殊字符的场景。

  2. 数据库差异处理

    • MySQL:默认用反斜杠转义,字段名可用反引号包裹(如 order)。

    • PostgreSQL:支持 $$ 符号包裹字符串(如 $$${projectName}$$)。

    • SQL Server:优先使用方括号转义字段名(如 [user-table])。

  3. 最佳实践

    • 参数化查询:优先使用预编译语句(如 WHERE name = ?),避免手动转义和 SQL 注入风险。

    • 统一转义策略:根据数据库类型选择标准方法,避免混用符号。


注释

• 符号 CHR(n) 需结合具体数据库函数使用(如 PostgreSQL 的 CHR(36),Oracle 的 CHR(38))。

• 部分数据库(如 Oracle)需配置会话参数(如 SET DEFINE OFF)以禁用 & 符号的变量绑定功能。

相关推荐
RestCloud2 小时前
借助ETL工具,实现AI智能体+数据的落地
数据仓库·人工智能·sql·etl·etlcloud·数据集成平台·java脚本
小二·3 小时前
RAG + 向量数据库实战:ChromaDB / Milvus / FAISS 选型与性能横评
数据库·milvus·faiss
矜持的左手4 小时前
电子小白的枕边书:电子学(The Art of Electronics)
数据库·restful
吴声子夜歌4 小时前
Redis 5.x——布隆过滤器
数据库·redis·缓存
蓝天下的守望者4 小时前
svt_apb_if里的宏定义问题
运维·服务器·数据库
上海云盾-小余5 小时前
网站频繁遭遇 SQL 注入溯源与原生漏洞修复全流程总结
数据库·sql
数据库小学妹5 小时前
国家区域医疗中心国产化改造实战:数据库选型、跨院区数据互通与踩坑经验
数据库·国产数据库·数据库选型·医疗信息化·信创数据库·医疗信创
AllData公司负责人6 小时前
数据库同步平台|AIIData数据中台实现OceanBase、达梦数据库、OpenGauss、人大金仓、Hive、TDengine 一键接入Doris
大数据·数据库·hive·mysql·oceanbase·tdengine
2603_954708316 小时前
全维度容错设计,打造微电网安全运行屏障
服务器·网络·数据库·人工智能·分布式·安全