1

私が知りたかったのは、テーブルの検索を実行して 4 つの変数 (列) を指定する方法があるかどうかです。しかし、4 つのうち、いずれかまたはすべての変数をアクティブにして検索を実行できます。問題は、if ステートメントを記述する場合です。入力に応じて、16 の if 関数があります (2 つの変数の問題に対して 4 つの if ステートメントを書きました)。

例:

という名前のテーブルがあり、 、、およびのcc_music4 つの列があります。track_nameartistalbumgenre

問題: ユーザーが曲を探しています。ユーザーは 4 つの列すべてに入力することも、任意の 1 つを入力することも、まったく入力しないこともできます。

4

2 に答える 2

2

付加的ではあるが「動的な」検索基準WHEREを可能にするには、次のように句を構成する必要があります。

WHERE
     (@trackName IS NULL OR track_name = @trackName)
 AND (@artist IS NULL OR artist = @artist)
 AND (@album IS NULL OR album = @album)
 AND (@genre IS NULL OR genre = @genre)

次のような部分一致を含めるように、これを少し修正することも検討してください。

 AND (@artist IS NULL OR artist LIKE '%' + @artist + '%')

多数の列でこれを行うことによるパフォーマンスへの影響に注意してください。インデックスをチェック!

于 2013-03-28T13:44:23.033 に答える
0

Oracle SQLを使用していると仮定して

次の SQL を使用します。

select * from cc_music where track_name like "%"||:track_name||"%" and artist like "%"||:artist||"%" and album like "%"||:album||"%" and genre like "%"||:genre||"%" ;

: はバインド変数名です。

16の異なる機能は必要ありません

于 2013-03-28T14:00:19.790 に答える