多字段搜索的SQL问题

时间:2010-11-17 16:57:53

标签: sql mysql

我在这里遇到了一些问题,我实际上已经有一段时间遇到了同样的问题,但我最后还是让它工作到底,但是我想知道我是否错过了一个简单的方法。

说我是否有:

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运算符时查找null或其他字符串。

我知道这可能看起来很糟糕,但很难在某些时候得到一点。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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)