使用concat()函数,是具体情况

时间:2013-05-21 11:26:47

标签: postgresql postgresql-9.2

我需要连接正则表达式模式片段,对于这种模式,我使用C风格的Escape E

如果使用连接运算符||,则工作:

E'a{'||2||'}'

没有多大意义,但只是使用concat()函数进行连接,如何连接它?

1 个答案:

答案 0 :(得分:1)

误解是:C风格的转义只是输入字符串文字的另一种方式。当您连接字符串时,无论是||运算符还是concat()函数(Postgres 9.1+), 单个字符串输入的方法无关< /强>

除此之外,其他类型的文字(例如示例中的数字常量2)会自动强制转换为text

最重要的是,您的示例不会在转义字符串中显示任何具有特殊含义的字符(例如\)。

SELECT E'a{' || 2 || '}';

SELECT concat(E'a{', 2, '}');

因此,E在这个特定的例子中完全不相关。

由于您提到了正则表达式模式:其中包含\,其中必须使用\符号E''进行转义:

SELECT E'\\.' || 2 || '\.';

如果没有必要,现代的方法是来使用转义字符串。这就是Postgres用PostgreSQL 9.1切换到standard_conforming_strings = ON的原因。这是我测试过的设置。