Có rất nhiều kết quả không cần thiết bằng cách sử dụng phương thức contains() trong truy vấn của tôi. Đừng nói với tôi để sử dụng như hoặc cái gì khác. Nó được hardcoded và không thể thay đổi.Cách chứa() trong PL-SQL hoạt động?
Trả lời
Chứa được sử dụng trên các lĩnh vực văn bản rằng có một 'BỐI CẢNH Index', mà chỉ một trường văn bản để tìm kiếm. Việc sử dụng các ý kiến như thế này (sử dụng toán tử score
để hiển thị những gì được trả về từ các contains
khoản dựa trên 1 trong contains
phù hợp với 1 trong score
):
SELECT score(1), value
FROM table_name
WHERE CONTAINS(textField, 'searchString', 1) > 0;
Đối với dữ liệu như thế này trong bảng table_name
value | textField
-------|-----------------------------------------------
A | 'Here is searchString. searchString again.'
B | 'Another string'
C | 'Just one searchString'
truy vấn đó sẽ trở
2 A
1 C
Vì vậy chứa là tương tự như giống như, nhưng sẽ đếm số lần chuỗi xuất hiện trong trường văn bản. Tôi không thể tìm thấy tài nguyên sử dụng Chứa cách nó được sử dụng trong truy vấn bạn đã đăng, nhưng tôi nghĩ rằng sẽ trả về các hàng có dFullText
có ít nhất một trường hợp car
trong đó hoặc tương đương với sql này:
Select * from blabla where dFullText like "%car%"
Here là một nguồn khác.
Có sự khác biệt nào giữa hàm contains() và instr() không? – Rene
@Rene, vâng, chúng khác nhau. 'Contains()' đếm số lần chuỗi xuất hiện trong trường văn bản và trả về số đó. 'instr()' tìm kiếm một chuỗi trong một trường (hoặc chuỗi khác) và trả về chỉ mục của chuỗi tìm kiếm đầu tiên được tìm thấy (hoặc 0 nếu nó không được tìm thấy). Xem ví dụ về 'instr()' tại http://www.techonthenet.com/oracle/functions/instr.php – rosscj2533
Xem ví dụ này từ 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;
Bạn có thể đăng truy vấn không? – Padmarag
Tôi có thể chuyển bất kỳ thông số nào vào chứa để thu hẹp kết quả tìm kiếm cho kết quả chính xác hay không. – Artic
Chọn * từ blabla chứa (dFullText, "ô tô") – Artic