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

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

我实现了一种搜索机制,用户可以在其中搜索关键字,并且某种程度上我在搜索这些单词时遇到了问题。 即使我在LIKE子句中使用WHERE,我似乎也无法包括上面的所有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'

09-10 20:01