如何解决将自定义搜索过滤器转换为动态SQL
|| 我正在编写一个自定义搜索页面,该页面将允许人们搜索艺术品,但我想允许用户在搜索框中输入自定义命令/标签,以使他们可以直接控制过滤结果,而不必使用除搜索框。让我举个例子吧... 我希望用户能够在文本框中键入以下内容:Textbox Input: color=red|blue|green value>=5.00+<=10.00
它将转换为以下我可以挂在我的SQL查询末尾的SQL:
AND (Artwork.Color = \'red\' OR Artwork.Color = \'blue\' OR Artwork.Color = \'green\')
AND (Artwork.Price >= 50.00 AND Artwork.Price <= 100.00)
你有什么想法...
1)允许人们在文本框中键入这些自定义命令并将这些命令转换为SQL,这是正常的做法吗?如果没有,我如何允许高级搜索选项传入,同时保持页面简单?
2)将这些自定义命令转换为SQL的最佳方法,如何转换由多个运算符(+,|)分割的未知数量的过滤器?
这是一个使用ASP.NET(C#)和MSSQL构建的Web项目。提前致谢! :)
解决方法
就我个人而言,我总是沿着为有效输入控件(复选框列表,日期选择器等)的所有搜索选项创建UI的路线。尽管起初听起来很痛苦,但我认为一旦您使用了SQL ish systax,对其进行了转换并使其变得安全,它的工作原理就一样。它对非极客用户也更加友好。
您始终可以将选项隐藏在标有“搜索选项”的隐藏面板中,然后在需要时可以弹出,而在不需要时可以释放屏幕。
,是的,这是相当普遍的做法。但是当然,并非所有网站都允许这样做。
提出自己定义搜索条件的标准化方法。参见编号1中的链接。
看看ASP .NET Query Extender
,要回答您的第一个问题,我认为这不是正常的做法。对于普通用户而言,很难记住这种非常具体的搜索语法。您可能需要查看Google的高级搜索页面,以了解他们是如何做到的。这就是我已经看到并使用过的方法。如果您要实现这样的功能,那么我认为仍然有一个简化的自由格式文本搜索将是明智的。这样,新用户无需使用您的语法就可以使用您的网站。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。