1
我想为存储在SQL Server中的用户实现智能搜索表单。我想用于搜索的列在下面的屏幕截图中显示。SQL中的自定义搜索按列排序
但一些列具有更高的优先级。例如,如果电子邮件或电话与数据库中的项目匹配,它将具有较高的排名,例如,按街道和城市创建的项目。
我甚至不知道从哪里开始。
我只需要一些暗示要学什么。
我的应用程序运行在MVC 5和db我正在使用SQL Server。
谢谢你的帮助。
我想为存储在SQL Server中的用户实现智能搜索表单。我想用于搜索的列在下面的屏幕截图中显示。SQL中的自定义搜索按列排序
但一些列具有更高的优先级。例如,如果电子邮件或电话与数据库中的项目匹配,它将具有较高的排名,例如,按街道和城市创建的项目。
我甚至不知道从哪里开始。
我只需要一些暗示要学什么。
我的应用程序运行在MVC 5和db我正在使用SQL Server。
谢谢你的帮助。
所以实现你的优先级算法排序顺序:
...
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
- 优化不同条件下的搜索(执行计划)。
这可以工作,但它也返回不匹配的项目。不知道如何在这里使用“where”关键字 – tonco
更新了答案。 –
巨型 - 它的作品 - 谢谢你。你能否再多帮我一次标点符号?在“WHERE”子句中,我使用“LIKE”而不是“=”.... WHERE(@firstName是NULL或t.FirstName像@firstName) 列FirstName中的一行包含单词“Ján ”。 “喜欢”与小写字母“j”正常工作。但是“á”是问题,如果我尝试搜索例如“ja%”它不起作用。你有任何提示如何解决它? thx – tonco