你好,我试图在一个Cassandra查询,其中有一个数据类型文本的解释字段工作。我使用dollar-quoted strings
转义特殊字符,但我面临的问题时,我的解释字段的字符串以美元符号结束
例如
INSERT INTO Users (name, explanation) VALUES ($$Tom$$, $$Some'text$$$);
字符串
最后两个用美元引起来的字符串是结束引号,但倒数第三个是解释的一部分,我怎么才能转义它呢?或者有没有其他方法可以转义所有特殊字符,包括美元符号?
Thanks in advance
1条答案
按热度按时间mfpqipee1#
从语法上看,词法分析器似乎只是搜索到
$$
的下一个出现,并不区分两个和三个美元符号。但是如果你在$
之后有任何字符,那么它就被正确处理了。(例如,字符串$$dwewdewe'adqdq$'$$
工作正常)-它只是不应该是结束$$
之前的最后一个字符。如果你想插入字符串中的'
字符,你可以用另一个'
字符来转义(参见doc)它(例如;'this is string with '' inside'
-它工作得很好,并且会像预期的那样产生this is string with ' inside
)。这是关于一次插入语句。但是如果你从程序中插入数据,那么最好使用prepared statements-它们应该在所有现有的驱动程序中得到支持。当你使用准备好的语句时,你不需要关心转义-这是驱动程序的工作(实际上,没有转义发生,因为字符串是按原样发送的,而不是作为语句的一部分发送的)。除了不需要转义之外,你还应该获得更好的性能,因为语句的解析只发生一次,当它准备好时,然后只有语句ID加上参数被发送到Cassandra节点。