テーブル Store(ID,Title,Company) にクエリを実行して、タイトルに「用語」が含まれるすべてのレコードを取得し、最初に完全に一致したレコードを表示し、次に部分一致を表示する方法。つまり、「foo」を探している場合、次のように表示されるレコードをワンドします
- フーと息子たち
- グッドフー
- フーバー
- フットボール
- ハーフール
私が持っているものはこちら
Create PROCEDURE [dbo].[SearchUserInfo]
@query nvarchar(500),
@term nvarchar(500)
(SELECT Title,Company,
1 as match
FROM Stores
WHERE CONTAINS(Title, @query))
UNION
(SELECT Title,Company,
0 as match
FROM Stores
WHERE Title like '%' + @term +'%')
order by match desc
このクエリの問題は、重複したレコードが返されることです。一致するものとして 0 を削除すると、ソート方法がわからないため、CONTAINS からの結果が LIKE からの結果の前に表示されます。
ありがとう