我正在编写一个允许人们搜索艺术品的自定义搜索页面,但我希望允许用户在搜索框中输入自定义命令/标签,让他们可以直接控制过滤结果而无需使用任何东西但搜索框。让我举个例子...
我希望用户能够在文本框中输入如下内容:
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 系统、转换它并使其安全后,它的效果是一样的。它对非极客也更加友好。
您始终可以将选项隐藏在标有“搜索选项”的隐藏面板中,然后它可以在需要时弹出,不需要时释放屏幕。
关于c# - 将自定义搜索过滤器转换为动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138843/