我有以下查询:
SELECT
field
FROM
myTable
WHERE
field ~ '\\Qprefix[\\E.+'
找不到像prefix[foo]
这样的值。
如何替换\Q..\E
?
答案 0 :(得分:1)
这种带有\Q..\E
不带引号的子字符串的正则表达式仅由PCRE支持,这在PostgreSQL中本身不可用。
如果您的程序通常必须处理此语法,则可以将PCRE支持作为扩展安装,如下所示:https://github.com/petere/pgpcre
另一方面,如果只有一个应该使用的正则表达式,首先
请注意'\\Qprefix[\\E.+'
中的双反斜杠意味着PostgreSQL 9.1及更高版本的两个反斜杠,除非standard_conforming_strings
显式切换到OFF
。
为了对此设置不敏感,具有旧语法的文字应该以{{1}}为前缀。这在文档中的String Constants with C-style Escapes中有描述。
为了简单地将E
与PostgreSQL风格的正则表达式与现代语法匹配,这可行:
prefix[foo]