Db2 contains查询应该在任何匹配的情况下返回结果

Db2 contains查询应该在任何匹配的情况下返回结果,db2,Db2,我正在使用DB2,想知道如何解决以下问题 我有一个表user\u games,我传递games\u name,它应该返回games\u id 例如:如果我将游戏名称作为“足球、网球、高尔夫”传递,db2查询将返回1作为游戏id,因为游戏名称与网球匹配 表名:用户游戏 GAME_ID GAME_NAME ======= ========== 1 Tennis 2

我正在使用DB2,想知道如何解决以下问题

我有一个表user\u games,我传递games\u name,它应该返回games\u id

例如:如果我将游戏名称作为“足球、网球、高尔夫”传递,db2查询将返回1作为游戏id,因为游戏名称与网球匹配

表名:用户游戏

GAME_ID               GAME_NAME

=======              ========== 

1                    Tennis 

2                    Badminton 

3                   Basketball
我尝试在db2中使用contains

    SELECT * FROM user_games WHERE CONTAINS(GAME_NAME,'Soccer, Tennis, Golf') = 0
我得到的错误是

SQL错误[42724]:未安装或未正确配置文本搜索选项

请建议如何使用查询或作为hibernate条件实现结果


谢谢。

包含
只有在正确安装和配置了DB2文本搜索或DB2 Net Search Extender并且数据库已启用文本搜索()时才起作用。尝试启动文本搜索并使用以下命令启用数据库:

db2ts start for text
db2ts enable database for text connect to mydb
db2ts "create index game_name for text on user_games(game_name) connect to mydb"
db2ts "update index user_games for text connect to mydb"
现在游戏名称的contains函数应该可以工作了。但是,如果您没有该功能,则需要求助于另一种方法。例如:

select * FROM user_games 
WHERE GAME_NAME in ( 'Soccer', 'Tennis' ,'Golf' )

如果您只希望包含到游戏名称中:

SELECT * FROM user_games 
WHERE 'Soccer, Tennis, Golf' like '%' || GAME_NAME || '%'
或者像这样:

SELECT * FROM user_games 
WHERE position (GAME_NAME IN 'Soccer, Tennis, Golf')>0
如果您只想在游戏名称中包含“,”分隔符:

SELECT * FROM user_games 
WHERE 
'Soccer, Tennis, Golf' like trim(GAME_NAME) || ',%' or
'Soccer, Tennis, Golf' like '%, ' || trim(GAME_NAME) || ',%' or
'Soccer, Tennis, Golf' like '%, ' || trim(GAME_NAME)
从包含的用户游戏中选择*(游戏名称,“足球、网球、高尔夫”)=0

函数是内置的搜索函数,可用于DB2中的全文搜索

SQL错误[42724]:未安装或未正确配置文本搜索选项

出现错误是因为此服务器上未安装或未正确配置DB2文本搜索

请建议如何使用查询或作为hibernate条件实现结果

确保DB2文本搜索或DB2 Net Search Extender是,并且数据库已启用文本搜索