0

float 値のテーブルを使用していますが、パラメーターで列を入力しています

ListVal から Aver として AVG(@var) を選択

列名 (パラメーター) を入力すると、次のエラーが表示されます。データ型 nvarchar は avg 演算子に対して有効ではありません。しかし、すべての列はフロートです。

ヘルプ!!!お願いします

4

2 に答える 2

4

動的 SQL を使用する必要があります

例えば

EXEC( 'SELECT AVG( [' + @var + '] ) AS Aver FROM ListVal' )
于 2009-09-24T16:07:14.027 に答える
2

クエリ パラメーターは、列名ではなく、単一のリテラル値に置き換えます。これは標準的な SQL の動作であり、RDBMS のすべてのブランドで同じようにサポートされています。

列の名前を指定すると、次のクエリを実行したようになります。

SELECT AVG('columnname') ...

これは無意味な操作です。AVG()文字列とは何ですか?

@Matt Rogishは、列名(またはテーブル名、またはその他のSQL構文)を動的にする唯一の方法は動的SQLを使用することであるという彼の答えで正しいです。つまり、アプリケーション変数を文字列に補間し、結果の文字列を SQL クエリとして使用します。

クエリ パラメーターは、単一のスカラー値を挿入するためだけに使用できます。これが、パラメーターがクエリで解釈される方法です。

于 2009-09-24T16:10:00.297 に答える