自然言語をSQLクエリに変換する方法は?不正確なファジークエリ.sqlf

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

質問

ユーザーが次のようなものを入力できるようにする機能を実装したいと思います。

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

等しいもの:

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

あなたは私にとって役立つ解決策を知っているかもしれませんか?私の2番目の質問は、アプリケーション構造のどこに変換する必要があるかです。アプリケーションコードまたは何らかの形でデータベースで?

私のアプリはC#で記述されており、ado.netを介してSQL Server 2008に接続します。

私はヒント、擬似コードなどに非常に優れています。

前もって感謝します !

役に立ちましたか?

解決

SQL Serverを使用すると、ユーザー定義の機能を定義できます(参照 たとえば、この記事)。関数を定義した場合 low 次に、最初に書いたコードは完全に有効なSQLクエリであり、前処理をまったく実行する必要はありません。宣言は次のようになります。

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

機能呼び出しよりもファジーな言語を許可したい場合、それは別の(そしてかなり複雑な)問題になります。私はそれを行うライブラリを知りません、そして、あなた自身が非常に挑戦的である可能性があることを実装することはありません。 (あなたが何を意味するのかを見ることができるように、もっと例を追加することをお勧めします)。

もちろん、ユーザーがRAW SQLクエリを書くことを許可する場合、ユーザーは信頼できる人である必要があります(データベースからすべてのデータを簡単に削除できるため)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top