SQL-如何在PostgreSQL中转义括号

Mic*_*ade 5 sql postgresql

我有以下sql命令,我需要在PostgreSQL中转义括号,我该怎么做?

SELECT rua 
  FROM logradouros 
 WHERE rua ~* 'Antonio De Sant\'Ana Galvao Av Frei (Av 01 Parte A)' 
 LIMIT 100;
Run Code Online (Sandbox Code Playgroud)

Grz*_*ski 4

使用反斜杠转义括号。请注意,如果standard_conforming_strings参数设置为 off (这是 PostgreSQL 9.1 之前的默认行为),则需要使用两个反斜杠\\

转义括号的方法一般有以下三种:

  • 普通'pattern'语法,取决于 standard_conforming_strings 设置
  • 转义字符串常量例如E'pattern'
  • 美元引用的字符串常量$$pattern$$$sometext$pattern$sometext$

第一个是标准 SQL(尤其是 standard_conforming_strings),其他是 PostgreSQL 扩展。选择您喜欢的任何方法。

这里有一些例子:

SET standard_conforming_strings = 0;

SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~* 
'Antonio De Sant\'Ana Galvao Av Frei \\(Av 01 Parte A\\)'

SET standard_conforming_strings = 1;

SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~* 
'Antonio De Sant''Ana Galvao Av Frei \(Av 01 Parte A\)'

SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~* 
E'Antonio De Sant\'Ana Galvao Av Frei \\(Av 01 Parte A\\)'

SELECT
'Antonio De Sant''Ana Galvao Av Frei (Av 01 Parte A)'
~* 
$$Antonio De Sant'Ana Galvao Av Frei \(Av 01 Parte A\)$$

SET standard_conforming_strings = default;
Run Code Online (Sandbox Code Playgroud)