我正在搜索技术词“AN-XYZ99”。所以我用
SELECT *
FROM foo
WHERE CONTAINS(bar, 'AN{-}XYZ99') > 0
但我也得到像“FO-XYZ99”或“BAR-XYZ99”这样的结果。我能做些什么来确保预期的结果?
我用了
BEGIN
CTX_DDL.CREATE_PREFERENCE('FOO','BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE('FOO', 'ALTERNATE_SPELLING', 'GERMAN');
CTX_DDL.SET_ATTRIBUTE('FOO', 'COMPOSITE', 'GERMAN');
CTX_DDL.SET_ATTRIBUTE('FOO', 'MIXED_CASE', 'NO');
END;
来自“bar”列的示例数据 (VARCHAR2(4000)):
"unbekannt Stadt Text: AN-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 foo"
"unbekannt Stadt Text: FO-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bar"
"unbekannt Stadt Text: BAR-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bla"
使用上面的语句,我希望第一行作为输出,但我也得到第二行和第三行。
Oracle Database 11g 企业版 11.2.0.3.0 - 64 位生产