需要SQLite查询帮助

时间:2017-06-17 03:42:08

标签: java android sqlite android-sqlite

我在listView中显示客户端信息,其中只显示客户端,并将账单输入到数据库中。

The Canterbury Corpus
The Artificial Corpus
The Large Corpus
The Miscellaneous Corpus
The Calgary Corpus
The Canterbury Corpus

现在我正在尝试向listView添加搜索功能,用户可以在其中键入客户名称或地址的任何部分。

query = "SELECT * FROM clients" +
                " WHERE LOWER(" + COLUMN_BILLONE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTWO + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTHREE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLFOUR + ") NOT LIKE LOWER('bill');";

这项工作的一半时间。它的工作时间是你只输入一个名字而不是地址的字母。但是,如果您搜索地址的任何部分,它不仅会向客户显示账单,而且还会输入账单中的客户。

如何更改查询语句,以便仅在用户在一个查询中搜索名称或地址时显示输入帐单的客户?

修改

我刚刚注意到,当我输入名称时,搜索功能也不会过滤名称!

修改

在这里包含搜索结果的一些图片

before search results after search results

以下是您在取出查询的帐单部分时的搜索功能 before search after search

2 个答案:

答案 0 :(得分:3)

AND放在方括号“()”之后放置adalal bock。以这种方式,当最后两个条件中的任何一个为真时,和之后的块将为真。

query = "SELECT * FROM clients" +
                " WHERE LOWER(" + COLUMN_BILLONE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTWO + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTHREE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLFOUR + ") NOT LIKE LOWER('bill') AND" +
                " (LOWER(" + COLUMN_NAME + ") LIKE LOWER('%" + inputText + "%') OR" +
                " LOWER(" + COLUMN_ADDRESS + ") LIKE LOWER('%" + inputText + "%'));"

答案 1 :(得分:0)

感谢juan通过将()大约一半的查询引导到了正确的方向!所有我必须做的就是修复另一个问题就是把它放在另一半左右,就像这样!

query = "SELECT * FROM clients" +
                " WHERE (LOWER(" + COLUMN_BILLONE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTWO + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLTHREE + ") NOT LIKE LOWER('bill') OR" +
                " LOWER(" + COLUMN_BILLFOUR + ") NOT LIKE LOWER('bill')) AND" +
                " (LOWER(" + COLUMN_NAME + ") LIKE LOWER('%" + inputText + "%') OR" +
                " LOWER(" + COLUMN_ADDRESS + ") LIKE LOWER('%" + inputText + "%'));";