SQL 中的自定义搜索,按列排名
Custom search in SQL with rank by columns
我想为存储在 SQL 服务器中的用户实现智能搜索表单。我想用于搜索的列显示在下面的屏幕截图中。
但有些列的优先级更高。例如,如果电子邮件或 phone 与数据库中的项目匹配,它将比例如按街道和城市创建的项目具有更高的排名。
我什至不知道从哪里开始。
我只需要一些提示来学习什么。
我的应用程序 运行 在 MVC 5 下,对于数据库,我正在使用 SQL 服务器。
感谢您的帮助。
所以按排序顺序实施您的优先级算法:
...
set @email = NullIf(@email, '')
set @city_id = NullIf(@city_id, 0)
SELECT
...
WHERE (@email is NULL or t.email = @email)
AND (@city_id is NULL or t.city_id = @city_id)
AND ...
ORDER BY
CASE
WHEN @email = u.email THEN 1
WHEN @city_id = t.city_id THEN 2
...
END
OPTION(RECOMPILE)
recompile
- 针对不同条件优化搜索(执行计划)。
我想为存储在 SQL 服务器中的用户实现智能搜索表单。我想用于搜索的列显示在下面的屏幕截图中。
但有些列的优先级更高。例如,如果电子邮件或 phone 与数据库中的项目匹配,它将比例如按街道和城市创建的项目具有更高的排名。
我什至不知道从哪里开始。
我只需要一些提示来学习什么。
我的应用程序 运行 在 MVC 5 下,对于数据库,我正在使用 SQL 服务器。
感谢您的帮助。
所以按排序顺序实施您的优先级算法:
...
set @email = NullIf(@email, '')
set @city_id = NullIf(@city_id, 0)
SELECT
...
WHERE (@email is NULL or t.email = @email)
AND (@city_id is NULL or t.city_id = @city_id)
AND ...
ORDER BY
CASE
WHEN @email = u.email THEN 1
WHEN @city_id = t.city_id THEN 2
...
END
OPTION(RECOMPILE)
recompile
- 针对不同条件优化搜索(执行计划)。