2017-02-20 2 views
-1

ich DB2 mit bin und wollen wissen, wie das unten stehende ProblemDb2 enthält Abfrage sollte Ergebnis zurück, wenn irgendwelche Übereinstimmungen

ich eine Tabelle user_games und i passieren die GAME_NAME zu lösen haben, und es sollte mir zurück die game_id.

Beispiel: wenn ich die GAME_NAME als 'Fußball, Tennis, Golf' db2 Abfrage sollte mir passieren zurückkehren 1 als game_id, wie die GAME_NAME Tennisspiele.

Tabellenname: user_games

GAME_ID    GAME_NAME 

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

1     Tennis 

2     Badminton 

3     Basketball 

ich versucht, mit enthält in db2

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

Ich erhalte den Fehler als

SQL-Fehler [42724]: Eine Textsuche ist nicht installiert oder nicht richtig konfiguriert.

Bitte geben Sie an, wie Sie das Ergebnis mithilfe von Abfrage- oder Ruhezustand-Kriterien erzielen können.

Danke.

Antwort

0

contains ist nur funktionsfähig, wenn DB2 Text Search oder DB2 Net Search Extender korrekt installiert und konfiguriert UND die Datenbank für die Textsuche aktiviert ist (Enabling Text Search). Versuche, die Textsuche zu starten und die Datenbank zu aktivieren mit:

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" 

Jetzt sollte die contains-Funktion für game_name funktionieren. Aber wenn Sie diese Funktionalität nicht haben, müssen Sie auf einen anderen Ansatz zurückgreifen. Zum Beispiel:

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

Wenn Sie enthält nur in GAME_NAME:

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

oder so:

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

Wenn Sie wollen, ist nur in GAME_NAME enthalten mit '' Trennzeichen:

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 WHERE CONTAINS (GAME_NAME, 'Fußball, Tennis, Golf') = 0

CONTAINS Funktion ist eingebaut in Suchfunktion für Volltextsuche in DB2.

SQL Fehler [42724]: Eine Textsuchoption ist nicht installiert oder nicht richtig konfiguriert.

Sie erhalten einen Fehler, weil DB2 Text Search auf diesem Server nicht installiert oder nicht ordnungsgemäß konfiguriert ist.

Bitte geben Sie an, wie Sie das Ergebnis mithilfe von Abfrage- oder Ruhezustandskriterien erzielen können.

Stellen Sie sicher, dass entweder DB2 Text Search oder DB2 Net Search Extender ist correctly installed and configured und dass die Datenbank für die Textsuche aktiviert ist.

Verwandte Themen