【问题标题】:LIKE clause with \ character in PostgreSQLPostgreSQL 中带有 \ 字符的 LIKE 子句
【发布时间】:2017-04-28 15:27:00
【问题描述】:

我在 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)查询中实现正确的最佳方法是什么?

【问题讨论】:

  • 它被视为转义字符,尝试select 't\om' like '%t\\om%' 转义转义字符

标签: postgresql sql-like


【解决方案1】:

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

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

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

编辑

正如 Sunrelax 所说,您还可以使用空字符串作为“转义”序列:

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

【讨论】:

  • 如果只想比较没有转义值的两个字符串:select 't\om' like '%t\om%' escape '';
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2012-02-12
    相关资源
    最近更新 更多