comment transformer en langage naturel requête SQL? Queries.SQLf floue Le manque de précision

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

Question

`d comme pour mettre en œuvre une fonction, qui permettra de taper quelque chose comme cet utilisateur:

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

ce qui est égal à:

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

ne vous savez peut-être des solutions qui seront utiles pour moi? Ma deuxième question est là dans la structure d'application dois-je transformer? Dans le code d'application ou d'une certaine manière dans la base de données?

Mon application est écrit en C # et se connecte à SQL Server 2008 via ADO.NET.

Je serais très reconnaissant pour toutes les notes, etc, pseudocode.

Merci à l'avance!

Était-ce utile?

La solution

SQL Server vous permet de définir des fonctions définies par l'utilisateur (voir par exemple cet article ). Si vous avez défini une low de fonction, le premier code que vous avez écrit serait parfaitement valide requête SQL et vous ne devez faire aucune pré-traitement du tout. La déclaration ressemblerait à peu près comme ceci:

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

Si vous voulez autoriser un langage plus floue que simplement les appels de fonction, alors ce serait une autre (et beaucoup plus compliqué) problème. Je ne suis pas au courant d'une bibliothèque qui fait cela et que vous pourrait en œuvre être tout à fait challange. (Vous pouvez ajouter d'autres exemples, afin que nous puissions voir ce que vous entendez).

Bien sûr, si vous permettez à l'utilisateur d'écrire des requêtes SQL premières, l'utilisateur doit être une personne de confiance (car ils peuvent facilement déposer toutes les données de votre base de données).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top