我有一个表列,其中包含如下所示的描述:
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'