我正在通过脚本构建一个postgresql查询,该脚本返回格式化的乳胶公式,该公式被双美元符号包围,例如以下一个:
$$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}$$"}'
)
但是,在插入之后,在数据库中消失了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模块自动生成公式,因此在每个frac
都是不是的选项。
我该怎么做才能防止这种行为发生?
backslash是代表字符串数组的字符串中的逃生字符:
SELECT ('{a,"b"c\d"}'::text[])[2];
text
-------
b"cd
(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[];