我需要在SQL Server中创建一个查询,其中搜索条件将根据用户输入包含/排除一个表。
假设我有两个表,TABLE_A
并TABLE_B
带有列KEYCOLUMN_A
和COLUMN_A
inTABLE_A
和列FKCOLUMN_B
和COLUMN_B
in 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
条款。并且随着查询中“可选”表数量的增加,排列和组合也会增加,并且会有很多IF
和ELSE
语句。
相反,我决定保持原样。因此,如果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 %%
与删除条件本身一样好?