Hanno molti risultati non necessari utilizzando il metodo contains() nella mia query. Non dirmi di usare come o qualcos'altro. È hardcoded e non può essere cambiato.Come funziona contains() in PL-SQL?
risposta
Contiene viene utilizzato su campi di testo che hanno un 'CONTESTO Index', che indicizza un campo di testo per la ricerca. L'utilizzo standard è così (usando l'operatore score
per visualizzare ciò che viene restituito dalla clausola contains
base al 1 contains
corrispondenza del 1 score
):
SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;
Per i dati come questa nel tavolo table_name
value | textField
-------|-----------------------------------------------
A | 'Here is searchString. searchString again.'
B | 'Another string'
C | 'Just one searchString'
Quella interrogazione restituisce
2 A
1 C
Così contiene è simile a come, ma conterrà quante volte una stringa si verifica in un campo di testo. Non riuscivo a trovare una risorsa utilizzando contiene il modo in cui viene utilizzato nella query che hai postato, ma penso che sarebbe restituire le righe in cui dFullText
ha almeno un'istanza di car
in essa, o l'equivalente di questo sql:
Select * from blabla where dFullText like "%car%"
Here è un'altra fonte.
C'è qualche differenza tra contiene() e instr()? – Rene
@Rene, sì sono diversi. 'Contains() 'conta quante volte una stringa si verifica in un campo di testo e restituisce quel numero. 'instr()' cerca una stringa in un campo (o un'altra stringa) e restituisce l'indice della prima stringa di ricerca trovata (o 0 se non è stata trovata). Vedi esempi di 'instr()' su http://www.techonthenet.com/oracle/functions/instr.php – rosscj2533
Vedi questo esempio da 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;
Potresti inviare la query? – Padmarag
posso passare qualsiasi parametro in contiene per restringere i risultati della ricerca al risultato esatto – Artic
Selezionare * da blabla dove contiene (dFullText, "auto") – Artic