首页/数据/SQL 速查/字符串转义与反斜杠差异
本包目录(311 条)

字符串转义与反斜杠差异

字符串里嵌引号、百分号的处理方式;MySQL 默认把反斜杠当转义符,PostgreSQL 标准字符串中反斜杠是普通字符,迁移前要核对。

SQL 速查数据更新于 2026-10-12

转义示例

转义示例
SELECT 'It''s a test' AS s;        -- 两个单引号表示一个
SELECT 'a' 'b' AS ab;              -- 仅 PostgreSQL:相邻字符串常量拼接
SELECT CONCAT('a', 'b') AS ab;     -- 通用写法
单引号写两遍:'it''s'
MySQL 反斜杠默认启用转义(NO_BACKSLASH_ESCAPES 可关闭)
PostgreSQL 反斜杠标准字符串中为普通字符;E'...' 才启用转义
跨行字符串可跨行,换行符会被保留
同一段含反斜杠的 SQL 在 MySQL 与 PG 可能得到不同数据,迁移前确认 standard_conforming_strings 与 NO_BACKSLASH_ESCAPES 设置。

易错点

  • Windows 路径直接写进字符串时反斜杠在 MySQL 里会被转义吃掉,需要双写或改成正斜杠
  • 把用户输入直接拼进 SQL 字符串会产生注入风险,参数化查询才是正确做法

数据来源与参考

  • MySQL 8.0 Reference Manual · String Literals
  • PostgreSQL Documentation · String Constants
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌