You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中执行UNCOMPRESS操作后如何保留转义字符?

问题根因

转义符丢失本质是MySQL默认字符串解析规则导致的:反斜杠\在MySQL默认配置下本身就是转义字符,你写SQL语句时传入的Test\"Me里的\会在字符串解析阶段就被MySQL吃掉,用来标识后面的"是普通字符,最终存入压缩数据的内容本身就没有\,所以解压后自然不会出现。


解决方案

场景1:直接在MySQL中写字符串字面量

要保留字面量\,需要对\本身做转义,写两个\\代表一个实际存储的\。你的语句修改为:

SELECT UNCOMPRESS(COMPRESS("Test\\\\\"Me"));

执行后就能得到预期的"Test\"Me"结果。
这里的转义逻辑:

  • 两个\\会被解析为一个实际的\
  • \"会被解析为一个实际的"
  • 组合起来\\\\\"最终解析为\",匹配你的预期。

场景2:应用程序调用MySQL执行语句

不要手动拼接SQL语句,使用参数化查询传入字符串参数。参数化查询会自动处理转义逻辑,你直接传入原始的Test\"Me字符串即可,无需手动添加额外转义符,同时还能避免SQL注入风险。

特殊配置适配

如果你的MySQL开启了NO_BACKSLASH_ESCAPES模式,反斜杠会被识别为普通字符,不需要额外转义,此时转义双引号直接写两个"即可,语句改为:

SELECT UNCOMPRESS(COMPRESS('Test""Me'));

你可以先执行SELECT "Test\\\\\"Me";查看输出是否符合预期,确认解析正确后再添加压缩、解压逻辑,排查效率更高。

内容的提问来源于stack exchange,提问作者S. Jaisimha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:05