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'
我有一个 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'