我在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');";
这项工作的一半时间。它的工作时间是你只输入一个名字而不是地址的字母。但是,如果您搜索地址的任何部分,它不仅会向客户显示账单,而且还会输入账单中的客户。
如何更改查询语句,以便仅在用户在一个查询中搜索名称或地址时显示输入帐单的客户?
修改
我刚刚注意到,当我输入名称时,搜索功能也不会过滤名称!
修改
在这里包含搜索结果的一些图片
答案 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 + "%'));";