将自定义搜索过滤器转换为动态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的高级搜索页面,以了解他们是如何做到的。这就是我已经看到并使用过的方法。如果您要实现这样的功能,那么我认为仍然有一个简化的自由格式文本搜索将是明智的。这样,新用户无需使用您的语法就可以使用您的网站。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...