Oracle SQL 喜欢不处理带连字符的单词

Oracle SQL Like not working for hyphenated words

我有一个 table 列,其中包含如下所示的描述:

id    description
--------------------------------------
100   ... post-doctorate ...
200   ... postdoctorate ...
300   ... post doctorate ...

我实施了一种搜索机制,用户可以在其中搜索关键字,但我在搜索这些词时遇到了问题。 尽管我在 WHERE 子句中使用了 LIKE,但我似乎无法包含上面的所有 3 行。

查询

WHERE description LIKE '%post-doctorate%'

我希望能够使用作为我的关键字说明的任何变体来搜索所有 3 个。

我也考虑过使用 SOUNDEX,但即使那样也行不通。

请注意

请忽略我在这里没有使用参数化查询这一事实。我知道它是什么以及如何使用它,但这是我创建的旧项目。

使用like的方法是:

WHERE description LIKE '%post%doctorate%'

但这比您想要的要普遍得多。所以,使用正则表达式:

WHERE REGEXP_LIKE(description, 'post[- ]?doctorate'

或者,如果您想允许任何字符最多出现一次:

WHERE REGEXP_LIKE(description, 'post(.)?doctorate'