我正在从一个表中选择数据,其中3列中的一列与给定的搜索字符串匹配:
SELECT *
FROM CARS
WHERE MODEL LIKE searchString
OR MANUFACTURER LIKE searchString
OR DESCRIPTION LIKE searchString
Run Code Online (Sandbox Code Playgroud)
但我需要根据列的权重,根据匹配的位置对结果进行排序.也就是说,如果在MODEL列中找到匹配,那么结果在结果中应该比在MANUFACTURER列中找到匹配时更高.加权为1-MODEL 2-MANUFACTURER 3-DESCRIPTION.
所有的帮助非常感谢,谢谢!
Oracle 的全文搜索 (FTS) 功能(Oracle Text)不仅速度更快,而且会根据其算法提供排名分数...
SELECT c.*,
CASE
WHEN c.model LIKE searchstring THEN 1
WHEN c.manufacturer LIKE searchstring THEN 2
WHEN c.description LIKE searchstring THEN 3
END AS match_rank
FROM CARS c
WHERE c.model LIKE searchstring
OR c.manufacturer LIKE searchstring
OR c.description LIKE searchstring
ORDER BY match_rank
Run Code Online (Sandbox Code Playgroud)
但是你没有提到如果另外两列匹配如何处理排名......