【问题标题】:How to unescape % in LIKE clause如何在 LIKE 子句中取消转义 %
【发布时间】:2023-01-26 03:23:07
【问题描述】:

我将我的搜索模式存储在patterns 表的数据库中。例如,我的表列 name_pattern 包含字符串“Basic%”。我想创建动态搜索,其中搜索模式将从 name_pattern 列中获取。

所以我的 SQL 查询应该类似于:

SELECT *
FROM products
WHERE product_name LIKE name_pattern <-- somehow joined from patterns table

似乎 Oracle 在我的字符串中转义了 % 但我想不转义它以便我的查询像这样工作:

SELECT *
FROM products
WHERE product_name LIKE 'Basic%'

【问题讨论】:

  • 据我所知,你可以使用%% 来逃避它
  • 如果您的 name_pattern 包含 'Basic%',则 LIKE name_pattern 等于 LIKE 'Basic%'dbfiddle.uk/nviXiJzQ

标签: sql oracle


【解决方案1】:

你不必(取消)逃避任何事情,我会说。

SQL> with
  2  patterns (name_pattern) as
  3    (select 'Basic%'    from dual union all
  4     select '%foot%'    from dual
  5    ),
  6  products (id, name) as
  7    (select 1, 'Basic instinct' from dual union all
  8     select 2, 'Visual Basic'   from dual union all
  9     select 3, 'Littlefoot'     from dual union all
 10     select 4, 'Happy feet'     from dual
 11    )
 12  select b.id, b.name, a.name_pattern
 13  from products b join patterns a on b.name like a.name_pattern;

        ID NAME           NAME_P
---------- -------------- ------
         1 Basic instinct Basic%
         3 Littlefoot     %foot%

SQL>

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 2010-10-01
    • 2011-03-01
    • 2014-05-10
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多