在 PostgreSQL 中带有 \ 字符的 LIKE 子句

LIKE clause with \ character in PostgreSQL

我在 PostgreSQL 9.3 中有这种行为:

-- (1) this "doesn't" work
select 't\om' like '%t\om%'
-- result = false

-- (2) this works
select 't/om' like '%t/om%'
-- result = true

为什么(1)查询结果为假?在 (1) 查询中获得 true 的最佳方法是什么?

\是一个转义序列,所以你也需要转义它:

select 't\om' like '%t\om%';

您还可以设置一个配置选项。参见 Escaping backslash in Postgresql

\ 在 SQL 除了 LIKE 运算符的条件中没有特殊意义,它可以用来转义通配符。

但是您可以为 LIKE 定义一个不同的转义字符,然后使 \ 成为 "normal" 字符:

select 't\om' like '%t\om%' escape '#';

编辑

正如 Sunrelax 评论的那样,您也可以使用空字符串作为 "escape" 序列:

select 't\om' like '%t\om%' escape '';