【问题标题】:Escape dollar sign in dollar-quoted strings query在美元引用的字符串查询中转义美元符号
【发布时间】:2021-04-25 04:27:20
【问题描述】:

您好,我正在尝试处理具有数据类型文本解释字段的 Cassandra 查询。我正在使用 dollar-quoted strings 转义特殊字符,但是当我的解释字段的字符串以美元符号结尾时我遇到了问题

例如

INSERT INTO Users (name, explanation) VALUES ($$Tom$$, $$Some'text$$$);

最后两个用美元引用的字符串是结束引号,但倒数第三个是解释的一部分,我该如何逃避呢?或者有没有其他方法可以转义包括美元符号在内的所有特殊字符?

提前致谢

【问题讨论】:

    标签: special-characters datastax-enterprise cassandra-3.0


    【解决方案1】:

    查看grammar,看起来词法分析器只是搜索直到下一次出现$$,并且不区分双美元符号和三美元符号。但是如果$ 之后有任何字符,那么它只是被正确处理(例如,字符串$$dwewdewe'adqdq$'$$ 工作得很好)——它不应该是结束$$ 之前的最后一个字符。如果你想在里面插入带有' 字符的字符串,你可以用另一个' 字符转义(参见doc)它(例如;'this is string with '' inside' - 它工作正常,并且会按预期产生this is string with ' inside )。

    这是关于一次插入语句。但是如果你从你的程序中插入数据,那么最好使用prepared statements——所有现有的驱动程序都应该支持它们。当您使用准备好的语句时,您不需要注意转义 - 这是驱动程序的工作(实际上,不会发生转义,因为字符串按原样发送,而不是作为语句的一部分)。除了不需要转义之外,您还应该获得更好的性能,因为语句的解析只发生一次,当它准备好时,然后只有语句 ID 和参数被发送到 Cassandra 节点。

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2015-06-17
      • 2021-07-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      相关资源
      最近更新 更多