2010-11-17 77 views
0

我在这里遇到了一些问题,实际上我现在有同样的问题了一段时间,但我入侵并让它工作到最后但我想知道如果我错过了一个简单的这样做的方式。多字段搜索的SQL问题

说,如果我有:

Field input 1 
Field input 2 
Field input 3 (empty) 
Field input 4 

I want to query SELECT * FROM tbl_table WHERE field1 LIKE ? AND field2 LIKE ? AND field3 LIKE ? AND field4 LIKE ? 

基本上我都陷入困境时,输入是空的,因为它在一个领域的搜索和寻找空或另一个字符串时,我希望它只是丢弃的LIKE操作空的输入。

我知道这可能会读得很糟糕,但很难在某些时候得到一个观点。

回答

3
SELECT * FROM tbl_table WHERE (field1 IS NULL OR field1 LIKE ?) AND (field2 IS NULL OR field2 LIKE ?) AND .... 
+0

Ahhh我看到非常感谢老兄:) – 2010-11-17 17:03:47

0

本质上,您需要检查where子句中变量的值。检查它是否为null或具有像这样的值。

Declare @input1 varchar(50); 
Declare @input2 varchar(50); 
Declare @input3 varchar(50); 
Declare @input4 varchar(50); 

SET @input1 = 'a' 
SET @input2 = 'b' 
SET @input3 = NULL 
SET @input4 = 'c' 

SELECT 
    * 
FROM tbl_table 
WHERE 
    (@input1 is null OR field1 LIKE @input1) 
    AND (@input2 is null OR field1 LIKE @input2) 
    AND (@input3 is null OR field1 LIKE @input3) 
    AND (@input4 is null OR field1 LIKE @input4)