0

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

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

等しいもの:

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

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

私のアプリは C# で書かれており、ADO.NET 経由で SQL Server 2008 に接続します。

ヒントや疑似コードなどを教えていただければ幸いです。

前もって感謝します !

4

1 に答える 1

2

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

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

関数呼び出しだけでなく、よりあいまいな言語を許可したい場合、それは別の (そしてかなり複雑な) 問題になります。私はそれを行うライブラリを認識しておらず、それを自分で実装することは非常に困難になる可能性があります. (あなたの意図を理解できるように、さらに例を追加することもできます)。

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

于 2011-03-19T21:02:35.253 に答える