我正在通过一个脚本构建一个PostgreSQL查询,该脚本返回由双美元符号包围的格式化的LaTeX公式,如下所示:
$$6 x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$
而且,这些公式属于一个数组,因此完整的INSERT
查询将是这样的:
INSERT INTO table("array")
VALUES (
'{"$$6 x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$",
"$$\frac{9 x^{11}}{13} + \frac{13 x^{9}}{7} + x^{8} + \frac{x^{6}}{3}$$",
"$$2 x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}'
)
然而,在INSERT之后,\
之前的反斜杠(frac
)在数据库中消失了(我得到frac
而不是\frac
。因此我的公式在我的应用程序中不能很好地呈现。
这是单元格的内容:
{"$$6 x^{14} + frac{7 x^{13}}{5} + frac{13 x^{8}}{7} + frac{5 x^{5}}{6}$$",
"$$frac{9 x^{11}}{13} + frac{13 x^{9}}{7} + x^{8} + frac{x^{6}}{3}$$",
"$$2 x^{13} + frac{52 x^{12}}{3} + frac{65 x^{4}}{9} + frac{3}{2}$$"}
我在Python中使用sympy module来自动生成公式,因此在每个frac
都不是一个选项之前手动加倍反斜杠。
我该怎么做才能防止这种行为发生?
反斜杠是表示字符串数组的字符串中的转义字符:
SELECT ('{a,"b\"c\\d"}'::text[])[2];
text
-------
b"c\d
(1 row)
如果反斜杠不在具有特殊含义的字符之前,则忽略它。
将PostgreSQL中字符串数组的字符串表示形式内的所有反斜杠加倍,以获得所需的内容。
如果这样的反斜杠是您的字符串常量中唯一出现的反斜杠,则可以按以下步骤操作:
SELECT replace(
'{"$$6 x^{14} + \frac{7 x^{13}}{5} + \frac{13 x^{8}}{7} + \frac{5 x^{5}}{6}$$",
"$$\frac{9 x^{11}}{13} + \frac{13 x^{9}}{7} + x^{8} + \frac{x^{6}}{3}$$",
"$$2 x^{13} + \frac{52 x^{12}}{3} + \frac{65 x^{4}}{9} + \frac{3}{2}$$"}',
'\',
'\\'
)::text[];