【问题标题】:How to retain escape characters after UNCOMPRESS in MySQL?如何在 MySQL 中 UNCOMPRESS 后保留转义字符?
【发布时间】:2021-11-12 10:11:42
【问题描述】:

当我解压缩包含转义双引号字符的压缩字符串时,生成的字符串不包含转义字符 (\) 本身。这对随后对JSONConvert.DeserializeObject的调用造成了严重破坏

例如,如果我调用:

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

预期结果是

"Test\"Me"

但实际结果是

"Test"Me"

我应该怎么做才能得到我想要的结果?

【问题讨论】:

  • 是什么让你说"Test\"Me"是预期的结果?
  • 反斜杠只是为了让您能够提供一个内部带有双引号的字符串。如果你打印字符串"Test\"Me",你会得到Test"Me作为输出。
  • @SalmanA 仅仅因为那是我传入的?
  • 您需要学习两种语言(SQL 和 JSON)的字符串基础知识。如果你想在 sql 中“写”字符串test"me,你可以写成"test\"me"。如果要将相同的字符串转换为 JSON,则不要在数据库中存储反斜杠,而是从 db 中检索字符串,然后使用库或函数将该字符串转换为 JSON。
  • 您确实没有将字节 Test\"Me 传递给压缩。您将字节 Test"Me 传递给压缩。

标签: mysql compression escaping


【解决方案1】:

如果您想在中间获得\",那么您必须在COMPRESS() 部分中对其进行两次转义。像这样的:

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

或者,也许不是将值用双引号括起来,而是使用单引号并只在反斜杠上转义一次,如下所示:

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

Demo fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2014-12-14
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多