正在将自定义搜索筛选器转换为动态SQL

本文关键字:转换 动态 SQL 筛选 自定义 搜索 | 更新日期: 2023-09-27 17:57:47

我正在编写一个自定义搜索页面,允许人们搜索艺术品,但我想允许用户在搜索框中输入自定义命令/标签,让他们直接控制过滤结果,而不必使用搜索框。让我举一个例子。。。

我希望用户能够在文本框中键入以下内容:

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项目。提前感谢!:)

正在将自定义搜索筛选器转换为动态SQL

就我个人而言,我一直在为所有搜索选项创建一个UI,并控制有效输入(复选框列表、日期选择器等)。虽然这听起来很痛苦,但我认为,一旦你提出了SQL系统,转换了它并使其安全,它也会得到同样的效果。它对非极客用户也更友好。

您可以始终将选项隐藏在标有"搜索选项"的隐藏面板中,然后在需要时弹出,在不需要时释放屏幕。

  1. 是的,这是很常见的做法。当然,并不是所有的网站都允许这样做
  2. 想出自己的标准化搜索条件定义方法。请参阅编号1中的链接

看看ASP.NETQueryExtender

为了回答您的第一个问题,我认为这不是正常的做法。普通用户很难记住这个非常具体的搜索语法。你可能想看看谷歌的高级搜索页面,看看他们是如何做到这一点的。这就是我所看到和使用的方法。如果你要实现这样的东西,我认为仍然有一个简化的自由形式文本搜索是明智的。这样,新用户就不必在使用你的网站之前学习你的语法。