2012-02-24 26 views
22

Tôi có WHERE khoản sau:Cú pháp lỗi gần 'của' trong điều kiện tìm kiếm toàn văn 'kiểm soát'

WHERE (@Keywords IS NULL 
      OR (CONTAINS((p.Title, p.Area, p.[Message]), @Keywords)) 
     ) 

Nếu @Keywords = 'control', sau đó truy vấn thực hiện thành công và lọc hồ sơ của tôi

Nếu @Keywords = 'control of', sau đó tôi nhận được lỗi sau:

Syntax error near 'of' in the full-text search condition 'control of'.

Tại sao điều này và tôi có thể làm gì để giải quyết vấn đề?

Lý do chính tôi sử dụng phương pháp này khi sử dụng điều kiện LIKE là để tôi có thể tìm kiếm nhiều từ.

Trả lời

27

Kèm theo các từ khóa trong dấu ngoặc kép nếu bạn muốn tìm kiếm chính xác cho kiểm soát của

SET @Keywords = '"control of"' 

Nếu bạn muốn tìm kiếm kiểm soátcủa, sử dụng như sau:

SET @Keywords = 'control AND of' 

Nhưng máy chủ có thể xem xét của dưới dạng rác hoặc từ dừng, vì vậy trong trường hợp này, hãy sử dụng các mục sau:

SET @Keywords = 'control AND "of"' 
+0

Chúc mừng điều này đã ngăn chặn lỗi. Tuy nhiên, kết quả chỉ trả lại nếu một trong những hàng đó chứa 'kiểm soát'. Tôi nghĩ rằng điều này đã làm việc với Tìm kiếm toàn văn bản để nó cũng sẽ nhận 'kiểm soát'? – Curt

+1

Có thể - bạn nên thử tất cả 3 tùy chọn kiến ​​so sánh kết quả. Và chú ý vào ** rác ** từ - máy chủ chỉ tách những từ này khỏi tìm kiếm giả định rằng điều này không thú vị và không liên quan –

+5

Chúc mừng lần nữa. Tuy nhiên '@ Keywords' là một tham số được truyền từ Ứng dụng Web, vì vậy tôi không có quyền kiểm soát văn bản. Thay thế "" thành "AND" có phải là giải pháp có thể chấp nhận được không? Whats cách phổ biến để thực hiện tìm kiếm như thế này? Chúc mừng – Curt

Các vấn đề liên quan