2017-02-20 29 views
-1

Я использую DB2 и хочу знать, как решить эту проблему нижеDb2 содержит запрос должен возвращать результат, если любые совпадения

У меня есть таблица user_games и я передать GAME_NAME и он должен вернуть мне game_id.

Например: если я передать GAME_NAME как «футбол, теннис, гольф» запрос db2 должен вернуть меня 1 как game_id, как GAME_NAME матчей в теннис.

Имя таблицы: user_games

GAME_ID    GAME_NAME 

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

1     Tennis 

2     Badminton 

3     Basketball 

Я попытался с помощью содержит в db2

SELECT * FROM user_games WHERE CONTAINS(GAME_NAME,'Soccer, Tennis, Golf') = 0 

я получаю ошибку, как

SQL Error [42724]: Опция поиска текста не установлен или неправильно настроен.

Просьба сообщить, как достичь результата с помощью запроса или в качестве критериев спящего режима.

Спасибо.

ответ

0

contains функционирует только в том случае, если DB2 Text Search или 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 для game_name должна работать. Но, если у вас нет такой функциональности, вам нужно прибегнуть к другому подходу. Например:

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

Если вы хотите только содержит в GAME_NAME:

SELECT * FROM user_games 
WHERE 'Soccer, Tennis, Golf' like '%' || GAME_NAME || '%' 

или как это:

SELECT * FROM user_games 
WHERE position (GAME_NAME IN 'Soccer, Tennis, Golf')>0 

Если вы хотите только содержать в GAME_NAME с '' разделителем:

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

SELECT * FROM user_games ГДЕ СОДЕРЖИТ (GAME_NAME, 'футбол, теннис, гольф') = 0

CONTAINS функция встроена в функции поиска доступных для полнотекстового поиска в DB2.

Ошибка SQL [42724]: опция текстового поиска не установлена ​​или неправильно настроена.

У вас возникла ошибка, так как DB2 Text Search не установлен или неправильно настроен на этом сервере.

Просьба сообщить, как достичь результата с помощью запроса или с помощью спящего режима.

Убедитесь, что либо DB2 Text Search или DB2 Net Search Extender является correctly installed and configured и что база данных включена для поиска текста.

 Смежные вопросы

  • Нет связанных вопросов^_^