我试图从postgres中的字符串字段返回括号内的所有字符:
此功能似乎运作良好:
select substring('foo bar [foobar] foo' from '%#"f%b#"%' for '#');
substring
-----------
foob
它不适用于开括号字符:
select substring('foo bar [foobar] foo' from '%#"[%]#"%' for '#');
substring
-----------
关闭括号工作正常, 我试过反斜杠,双反斜杠,句号,单引号
答案 0 :(得分:0)
你应该转义括号,因为它们是元字符:
select substring('foo bar [foobar] foo' from '%#"#[%#]#"%' for '#');
substring
-----------
[foobar]
(1 row)
或
select substring('foo bar [foobar] foo' from '%#[#"%#"#]%' for '#');
substring
-----------
foobar
(1 row)
除了从LIKE借来的这些设施之外,SIMILAR TO还支持从POSIX正则表达式中借用的这些模式匹配元字符:
...
- 括号表达式[...]指定一个字符类,就像在POSIX正则表达式中一样。