¿Cómo transformar el lenguaje natural en la consulta SQL? Consultas difusas imprecisas.sqlf

StackOverflow https://stackoverflow.com/questions/5364850

Pregunta

Me gustaría implementar una función, que permita al usuario escribir algo como esto:

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

Lo que es igual a:

"select * from products where (price >=0) And (price <= 50);"

¿Tal vez conoce alguna solución que sea útil para mí? Mi segunda pregunta es ¿en qué parte de la estructura de la aplicación debo transformarla? En el código de aplicación o de alguna manera en la base de datos?

Mi aplicación está escrita en C# y se conecta a SQL Server 2008 a través de ADO.NET.

Estaría muy agradecido por cualquier pista, pseudocódigo, etc.

Gracias por adelantado !

¿Fue útil?

Solución

SQL Server le permite definir funciones definidas por el usuario (ver Por ejemplo este artículo). Si definió una función low Luego, el primer código que escribió sería una consulta SQL perfectamente válida y no necesitaría hacer ningún procesamiento previo. La declaración se vería más o menos así:

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

Si desea permitir un lenguaje más difuso que solo las llamadas de funciones, entonces ese sería otro problema (y significativamente más complicado). No conozco ninguna biblioteca que haga eso e implementando que usted mismo podría ser un desafío. (Es posible que desee agregar más ejemplos, para que podamos ver lo que quiere decir).

Por supuesto, si permite que el usuario escriba consultas SQL sin procesar, el usuario debe ser alguien en quien pueda confiar (porque puede eliminar fácilmente todos los datos de su base de datos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top