Comment ne contient () dans le travail PL-SQL?
Question
Avoir beaucoup de résultats inutiles en utilisant la méthode contains () dans ma requête. Ne me dites pas à utiliser comme ou autre chose. Il est hardcoded et ne pouvait pas être changé.
La solution
Contient est utilisé sur les champs de texte qui ont un « contexte Index », qui indexe un champ de texte pour la recherche. L'usage standard est comme celui-ci (en utilisant l'opérateur score
pour afficher ce qui est renvoyé de la clause de contains
sur la base 1 contains
correspondant au 1 score
):
SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;
Pour les données comme celle-ci dans le tableau table_name
value | textField
-------|-----------------------------------------------
A | 'Here is searchString. searchString again.'
B | 'Another string'
C | 'Just one searchString'
Cette requête retournerait
2 A
1 C
contient donc est similaire à aimer, mais compter combien de fois une chaîne se produit dans un champ de texte. Je ne pouvais pas trouver une ressource en utilisant la façon dont il Contient est utilisé dans la requête que vous avez publié, mais je pense que ce serait retourner les lignes où dFullText
a au moins une instance de car
en elle, ou l'équivalent de ce sql:
Select * from blabla where dFullText like "%car%"
Autres conseils
Voir cet exemple de oracle.com
declare
rowno number := 0;
begin
for c1 in (SELECT SCORE(1) score, title FROM news
WHERE CONTAINS(text, 'oracle', 1) > 0
ORDER BY SCORE(1) DESC)
loop
rowno := rowno + 1;
dbms_output.put_line(c1.title||': '||c1.score);
exit when rowno = 10;
end loop;
end;