it-swarm.com.de

Wie funktioniert contains () in PL-SQL?

Habe viele unnötige Ergebnisse mit der Methode include () in meiner Abfrage. Sag mir nicht, wie ich oder etwas anderes verwenden soll. Es ist fest codiert und kann nicht geändert werden. 

13
Artic

"Enthält" wird für Textfelder verwendet, die einen "CONTEXT-Index" haben, der ein Textfeld für die Suche indiziert. Die Standardverwendung ist wie folgt (Verwenden des Operators score, um anzuzeigen, was von der contains-Klausel basierend auf der 1 in contains zurückgegeben wird, die der 1 in score entspricht):

SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;

Für Daten wie diese in der Tabelle table_name

value  |  textField
-------|-----------------------------------------------
A      |   'Here is searchString.  searchString again.'
B      |   'Another string'
C      |   'Just one searchString'

Diese Abfrage würde zurückkehren 

2 A
1 C

Enthält also ähnlich wie "Gefällt mir", zählt jedoch, wie oft eine Zeichenfolge in einem Textfeld vorkommt. Ich habe keine Ressource gefunden, die Enthält, wie sie in der von Ihnen geposteten Abfrage verwendet wird, aber ich denke, das würde Zeilen zurückgeben, in denen dFullText mindestens eine Instanz von car oder das Äquivalent dieses SQL enthält:

Select * from blabla where dFullText like "%car%"

Hier ist eine andere Quelle.

16
rosscj2533

Siehe dieses Beispiel aus 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; 
0
Padmarag