2010-11-17 70 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)