首页 > 解决方案 > 在美元引用的字符串查询中转义美元符号

问题描述

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

例如

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

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

提前致谢

标签: special-charactersdatastax-enterprisecassandra-3.0

解决方案


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

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


推荐阅读