SQL 字符串转义

🔤 SQL String Escape

Escape SQL identifiers and string literals in your browser to prevent injection when building queries.

📐 工作原理与说明
SQL 字符串转义。
  • 规则:单引号通常写作两个单引号(''),MySQL 也支持反斜杠转义(\')。
  • 重要:转义不能替代参数化查询(prepared statement)——后者才是防止 SQL 注入的根本手段。
  • 差异:不同数据库的转义规则不同,标准 SQL 用 '',MySQL 默认还支持 \。
  • 建议:优先使用带参数绑定的查询接口,仅在无法参数化时才考虑转义。

📖 方言差异

MySQL: 单引号 → \' 反斜杠 → \\ NUL → \0

PostgreSQL: 单引号 → '' 不转义反斜杠(默认)

SQL Server: 单引号 → '' 不转义反斜杠

📚 深度解析:SQL 字符串转义

💡 常见使用场景

  • 拼 SQL 前转义单引号,避免语法错误与注入(首选参数化查询)。
  • 临时排查问题时手工拼 SQL:把含单引号的值转义后再拼,避免语法错误——但生产代码应改用参数化查询。
转义 O'Brien
输入 `O'Brien` → 输出 `O''Brien`(标准 SQL 用双单引号转义)。

❓ 常见问题(FAQ)

转义能代替参数化查询吗?
不能,转义只是兜底,参数化才是防注入正解。
为什么转义仍可能被绕过?
因为转义依赖字符集与上下文:若连接使用了 GBK 等多字节编码,攻击者可用特定多字节序列「吃掉」你加的反斜杠从而逃逸引号;此外数字型参数不加引号时转义完全无效。参数化查询把数据与语句分开发给数据库,从根本上不存在这类问题。
⚠️ 使用说明与注意事项
📖关于「SQL 字符串转义」 ▼

📝工具简介

SQL 字符串转义。专为开发者打造的在线工具,纯前端运行,代码不离开浏览器。