在美元引用的字符串查询中转义美元符号

问题描述 投票:0回答:2

您好,我正在尝试处理 Cassandra 查询,该查询具有数据类型文本的解释字段。我正在使用

dollar-quoted strings
来转义特殊字符,但是当我的解释字段的字符串以美元符号结尾时,我遇到问题

例如

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

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

提前致谢

cassandra special-characters datastax-enterprise cassandra-3.0
2个回答
0
投票

查看语法,看起来词法分析器只是搜索直到下一次出现

$$
,并且不区分双美元符号和三美元符号。但是,如果
$
之后有任何字符,那么它就会被正确处理(例如,字符串
$$dwewdewe'adqdq$'$$
工作得很好) - 它只是不应该是结束
$$
之前的最后一个字符。如果你想插入带有
'
字符的字符串,你可以用另一个 ' 字符转义(参见
doc
)它(例如;
'this is string with '' inside'
- 它工作正常,并且会按预期产生
this is string with ' inside
).

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


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.