Oracle SQL不适用于带连字符的单词

Pat*_*rio 7 sql oracle search keyword sql-like

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

id    description
--------------------------------------
100   ... post-doctorate ...
200   ... postdoctorate ...
300   ... post doctorate ...
Run Code Online (Sandbox Code Playgroud)

我实现了一种搜索机制,用户可以搜索关键字,不知怎的,我在搜索这些单词时遇到问题.即使我LIKE在我的WHERE条款中使用,我似乎也不能包括上面的所有3行.

询问

WHERE description LIKE '%post-doctorate%'
Run Code Online (Sandbox Code Playgroud)

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

我也看着使用,SOUNDEX但即使这样也行不通.

请注意

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

Gor*_*off 7

使用的方法like是:

WHERE description LIKE '%post%doctorate%'
Run Code Online (Sandbox Code Playgroud)

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

WHERE REGEXP_LIKE(description, 'post[- ]?doctorate'
Run Code Online (Sandbox Code Playgroud)

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

WHERE REGEXP_LIKE(description, 'post(.)?doctorate'
Run Code Online (Sandbox Code Playgroud)