Tôi đang chạy hai truy vấn trên một bảng.SQL: Giống như so sánh - Các kết quả khác nhau
SELECT MSDS FROM dbo.MSDSSearch3 WHERE CONTAINS(MSDS, 'STYCAST')
Và
SELECT MSDS FROM dbo.MSDSSearch3 WHERE MSDS like '%STYCAST%'
Truy vấn đầu tiên sẽ trở lại
'STYCAST 50300 LV'
Và thứ hai sẽ trở lại
'STYCAST 50300 LV'
'STYCAST 2851 BLACK'
Có ai biết lý do tại sao những thứ tương tự sẽ trở lại nhiều giá trị hơn chứa? Có vấn đề gì với cách tôi đang chạy không? Cảm ơn trước.
gì phiên bản của SQL Server? Nếu năm 2008 bạn có thể nhận được một số khả năng hiển thị vào trình phân tích cú pháp với 'SELECT * FROM sys.dm_fts_parser ('" STYCAST 2851 BLACK "', 1033, 0,0)' Tôi không thể thấy bất kỳ lý do nào tại sao các chuỗi sẽ được xử lý khác nhau. –
Câu hỏi thú vị, bạn có chắc chắn rằng cả hai giá trị đều giống nhau không? như không có ký tự khoảng trống đầu/cuối. Điều đó có thể gây ra vấn đề này vì CONTAINS sẽ khớp chính xác với văn bản của bạn trong khi LIKE sẽ khớp với văn bản của bạn + bất kỳ thứ gì ở hai bên của nó – Purplegoldfish
Âm thanh như trường hợp danh mục fulltext của bạn đã lỗi thời. Bạn có thể thử xây dựng lại nó bằng [ALTER FULLTEXT CATALOG] (http://msdn.microsoft.com/en-us/library/ms176095.aspx). –