検索条件にユーザー入力に基づいてテーブルを含める/除外するSQL Serverでクエリを作成する必要がありました。
2 つのテーブルがTABLE_AありTABLE_B、 columnKEYCOLUMN_AとCOLUMN_Ain TABLE_A、 columnsFKCOLUMN_BとCOLUMN_BinがあるとしますTABLE_B。
そして、次のようなクエリ:
SELECT TABLE_A.* FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '%SEARCH2%'
ユーザーが入力しない場合はSEARCH2、検索する必要はありませんTABLE_B。IF ELSEしかし、これは条項を意味します。また、クエリ内の「オプションの」テーブルの数が増えると、順列と組み合わせも増え、IFandELSEステートメントが多くなります。
代わりに、ステートメントをそのままにしておくことにしました。SEARCH2が空の場合、クエリは事実上次のようになります。
SELECT * FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '% %'
SQL オプティマイザLIKE %%は、条件自体を削除するのと同じくらい良いことを認識できますか?