在 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 '';
我在 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 '';