フレーズごとに検索結果を取得し(複数の列を検索)、並べ替えの優先度は、一致する列(完全一致の場合を含む)に依存する必要があります。
私の例はうまく機能しますが、それでももっと良い方法があると思います。
WITH products
AS ( SELECT
-- .. some columns
--------- For Sorting -------------
[sortOrder] = CASE
WHEN [partNumber] = @searchPhrase
OR [manPartNumber]= @searchPhrase
THEN 1
WHEN FormatSiteNameForSearch( [siteName] )
LIKE '%' + @searchPhrase + '%'
THEN 2
WHEN [partNumber] LIKE '%' + @searchPhrase + '%'
OR [manPartNumber] LIKE '%' + @searchPhrase + '%'
THEN 3
ELSE 100
END
--------- End For Sorting -------------
FROM [dbo].[PRODUCTS_Products]
WHERE
[partNumber] LIKE '%' + @searchPhrase + '%'
OR [manPartNumber] LIKE '%'+ @searchPhrase + '%'
OR FormatSiteNameForSearch([siteName]) LIKE '%'+@searchPhrase+'%'
OR [name] LIKE '%'+ @searchPhrase+ '%'
)
SELECT TOP(10) *
FROM products
ORDER BY sortOrder
ありがとうございました。