一起使用我需要在SQL Server中创建一个查询,其中搜索条件将根据用户输入包括/排除表。将SQL LIKE运算符与%%
说我有两个表,在TABLE_A
TABLE_A
和TABLE_B
与KEYCOLUMN_A
列和COLUMN_A
和列FKCOLUMN_B
和TABLE_B
COLUMN_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 %%
是去掉了条件本身一样好?
有第二代码样品中的错字以搜索指定的模式。 %和%之间不应该有空格。 SELECT * FROM TABLE_A,TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_BAND TABLE_A.COLUMN_A LIKE'%SEARCH%'AND TABLE_B.COLUMN_B LIKE'%%' – devanalyst 2009-09-25 11:49:48
使用“sql-server”标签,如其他民间的数千... – gbn 2009-09-25 15:29:16
@deanalyst:你不能编辑问题来解决这个错误吗? – 2009-09-25 15:31:10