【问题标题】:Postgres escaping backslash in SIMILAR TO syntaxPostgres 在 SIMILAR TO 语法中转义反斜杠
【发布时间】:2014-10-20 00:27:32
【问题描述】:

我有一个包含 4 行的表格,如下所示:

Audit\\subfolder\System2.log
Audit\\subfolder/System1.log
Audit\\System2.log
Audit\\System1.log

运行以下查询:

select * from table where file_location SIMILAR TO '审核\\[^/]*'

将产生:

Audit\\subfolder\System2.log
Audit\\System2.log
Audit\\System1.log

但是运行以下查询:

select * from table where file_location SIMILAR TO '审核\\[^\\]*'

什么也没给我。

SIMILAR TO 子句中转义\\ 的正确方法是什么?

【问题讨论】:

  • SIMILAR TO 是 IMO 浪费时间。只需将与 perl 兼容的正则表达式与 ~ 一起使用。

标签: postgresql


【解决方案1】:

在 SIMILAR TO 子句中转义 \ 的正确方法是什么?

使用ESCAPE 可能是一个自然的选择:

SELECT * 
  FROM table1 
 WHERE file_location SIMILAR TO 'Audit\\[^!\]*' ESCAPE '!'

这里是SQLFiddle演示

【讨论】:

  • 奇怪的是它在第一次尝试时不起作用,但现在可以了,谢谢
猜你喜欢
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2015-09-21
  • 2011-11-09
  • 2017-04-21
  • 1970-01-01
相关资源
最近更新 更多