Db2 contains查询应该在任何匹配的情况下返回结果
我正在使用DB2,想知道如何解决以下问题 我有一个表user\u games,我传递games\u name,它应该返回games\u id 例如:如果我将游戏名称作为“足球、网球、高尔夫”传递,db2查询将返回1作为游戏id,因为游戏名称与网球匹配 表名:用户游戏Db2 contains查询应该在任何匹配的情况下返回结果,db2,Db2,我正在使用DB2,想知道如何解决以下问题 我有一个表user\u games,我传递games\u name,它应该返回games\u id 例如:如果我将游戏名称作为“足球、网球、高尔夫”传递,db2查询将返回1作为游戏id,因为游戏名称与网球匹配 表名:用户游戏 GAME_ID GAME_NAME ======= ========== 1 Tennis 2
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是,并且数据库已启用文本搜索