列名を引数として関数に渡す方法はありますか?
列に基づいて値をフィルタリングする関数を作成したいのですが、この列名を関数に(理想的には文字列として)渡しますか?
試しましたが、列名をvarcharとして宣言しましたが、明らかにこれは機能しません。
列名を引数として関数に渡す方法はありますか?
列に基づいて値をフィルタリングする関数を作成したいのですが、この列名を関数に(理想的には文字列として)渡しますか?
試しましたが、列名をvarcharとして宣言しましたが、明らかにこれは機能しません。
簡単な答え:いいえ。
これを行う唯一の方法は、動的SQLを使用することです。フィールド/テーブル名をパラメーターとして受け取り、実行する新しいSQLステートメントを作成するストアドプロシージャを作成することは珍しくありません。
ただし、関数は動的SQLを実行できません。
これは、誤った方向の設計を示している可能性があります。なぜこれが必要なのかを詳しく説明すると、まったく必要のない代替デザインを提供できる可能性があります。
または、関数よりもストアドプロシージャの方が適している場合があります。
一連のOR
条件を使用するという考えは、あなたの説明のようなものにも適合します。しかし、それは通常、非常に悪い計画を生み出します。なぜ、どのように対処するのかを説明するために、役立つリンクを調べます。非常に詳細ですが、知っておくとよいでしょう。
編集リンクは次のとおり です。T-SQLの動的検索条件
その場でクエリを作成する動的SQLでそれを行うことができます。または、フィールドの数が限られている場合は、次のようなことを行うことができます。
select * from table where
(param = 'field1' and field1 = value)
or (param = 'field2' and field2 = value)