我有这样的东西:

UPDATE table SET column=REGEXP_REPLACE(column, E'\[(.*)\]$', '');

这个查询没有问题,但是当我想从控制台来做这个问题时,比如:
psql -U postgres db -c "UPDATE table SET column=REGEXP_REPLACE(column, E'\\[(.*)\\]$', '');"

我认为转义某些字符有问题,但我无法处理。

最佳答案

假设有一个类Unix的shell,作为传递带有-c和复杂的多级引号的查询的替代方法,可以使用heredoc语法在标准输入中以原始形式传递它:

$ psql db << EOF
UPDATE table SET column=REGEXP_REPLACE(column, E'\[(.*)\]$', '');
EOF

10-04 21:28
查看更多