RIA サービスと Mysql データベースを備えた Silverlight 5 環境で作業しています。約 20 の異なる場所が格納されているテーブルがあります。Contains または LIKE を使用して、考えられる 20 か所のすべての場所で文字列が一致する可能性があるかどうか、各レコードをチェックする必要があります。レコード内で場所の一致が見つかった場合、そのレコードのいくつかのフィールドのみが必要です。他の 19 か所のデータではありません。チェックされているレコードに一致がない場合、何も保存されません。RIAと迷っています。20 個の or を使用してクエリを作成できますが、一致が見つかった場合はレコード全体が返され、データグリッドに表示されます。検索フィールドは 20 個の場所のうちの 1 つにある可能性があるため、不要なフィールドを非表示にすることはできません。 . ネストされたループ ルーチンを Mysql 関数またはプロシージャに保存して、エンティティ フレームワークがクエリできるようにすることはできますか? もしそうなら、正しい方向への構文プッシュを教えてください。事前にthx。
質問する
170 次
1 に答える
0
col1
例として、列名を, col2
, ..., col20
inと仮定しますyour_table
。
次のクエリは、レコード内で最初に見つかった一致する列の値を取得するのに役立ちます。
SET @criteria='%searh criteria%'; -- search string
SET @none_matched=NULL; -- use this alternative if none matched
SELECT
IF( col1 like @criteria, col1,
IF( col2 like @criteria, col2,
IF( col3 like @criteria, col3,
-- // 'if's until 'col20'
@none_matched ) ... ) as 'your_label' -- make sure you have 20 closing braces
FROM your_table;
このタイプのクエリを使用したパフォーマンスについてはわかりません。
または、ストアド プロシージャに依存することもできます。
于 2012-06-28T01:07:06.140 に答える