如何将自然语言转换为sql查询?不精确的模糊查询.SQLf

时间:2011-03-19 20:55:48

标签: c# sql ado.net fuzzy mssqlft

我想实现一个功能,允许用户输入如下内容:

"select * from products where low(price);" 

等于:

"select * from products where (price >=0) And (price <= 50);"
你可能知道任何对我有用的解决方案吗?我的第二个问题是应该在应用程序结构中将其转换为何处?在应用程序代码中或以某种方式在数据库中?

我的应用程序是用C#编写的,并通过ADO.NET连接到SQL Server 2008。

我会非常感谢任何提示,伪代码等。

提前致谢!

1 个答案:

答案 0 :(得分:2)

SQL Server允许您定义用户定义的函数(请参阅for example this article)。如果您定义了一个函数low,那么您编写的第一个代码将是一个完全有效的SQL查询,您根本不需要进行任何预处理。声明看起来大致如下:

 CREATE FUNCTION low(@price)
 RETURNS boolean AS
 BEGIN
   RETURN (@price >= 0) AND (@price <= 50)
 END

如果你想允许更多的模糊语言而不仅仅是函数调用,那么这将是另一个(并且更复杂)的问题。我不知道有任何图书馆能够做到这一点并且实现自己可能是一个挑战。 (您可能希望添加更多示例,以便我们可以看到您的意思。)

当然,如果您允许用户编写原始SQL查询,则该用户应该是您可以信任的人(因为他们可以轻松地从数据库中删除所有数据)。