在PostgreSQL中使用\ character的LIKE子句

时间:2017-04-28 15:27:00

标签: postgresql sql-like

我在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)查询结果为false?在(1)查询中获得真实的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

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

但是你可以为LIKE定义一个不同的转义字符,然后使\ a"正常"字符:

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

修改

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

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

答案 1 :(得分:1)

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

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

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