SQL请求 - 具有多个空值的SELECT

时间:2013-12-10 09:17:57

标签: java mysql sql select request

我有一个包含多列的数据库。现在我有一个Java程序,我可以在其中搜索数据库中的不同行。但我需要SQL SELECT请求的帮助。 我有一些texfields和一些复选框。现在我想如果文本字段为空,或者在其中一个复选框中选择“任何”,则选择请求应从此列中选择“全部”。

这是我现在的要求:

resultSet = sqlStatement.executeQuery("SELECT * FROM Messgerate WHERE COLUMN1 LIKE '%"+sColumn1+"%'" +
"AND COLUMN2 LIKE '%"+sColumn2+"%'" +
"AND COLUMN3 LIKE '%"+sColumn3+"%'" +
"AND COLUMN4 LIKE '%"+sColumn4+"%'" +
"AND COLUMN5 LIKE '%"+sColumn5+"%'" +
"AND COLUMN6 LIKE '%"+sColumn6+"%'" +"");

如果我在所有文本字段和复选框中输入内容,此请求将起作用。

是的,有人能帮帮我吗?

3 个答案:

答案 0 :(得分:1)

可以用AND替换OR吗?它会解决你的问题。因为AND运算符在第一个条件和第二个条件都为真时显示记录。

OR运算符会在第一个条件或第二个条件为真时显示记录。

"SELECT * FROM Messgerate WHERE COLUMN1 LIKE '%"+sColumn1+"%'" +
"OR COLUMN2 LIKE '%"+sColumn2+"%'"
"OR COLUMN3 LIKE '%"+sColumn3+"%'" +
"OR COLUMN4 LIKE '%"+sColumn4+"%'" +
"OR COLUMN5 LIKE '%"+sColumn5+"%'" +
"OR COLUMN6 LIKE '%"+sColumn6+"%'" +"");

答案 1 :(得分:0)

在下拉列表中选择Any时,您应该传递一个空字符串。然后你可以使用它:

resultSet = sqlStatement.executeQuery("SELECT * FROM Messgerate WHERE COLUMN1 LIKE '%"+sColumn1+"%'" +
"OR COLUMN2 LIKE '%"+sColumn2+"%'" +
"OR COLUMN3 LIKE '%"+sColumn3+"%'" +
"OR COLUMN4 LIKE '%"+sColumn4+"%'" +
"OR COLUMN5 LIKE '%"+sColumn5+"%'" +
"OR COLUMN6 LIKE '%"+sColumn6+"%'" +"");

答案 2 :(得分:0)

select * from messgerate where case when isnull(sColumn1,'') = '' then '' when isnull(sColumn1,'') = 'any' then '' else COLUMN1 end LIKE '%"+sColumn1+"%'"

对其余列重复case语句