我对如何搜索两个单独的列感到有些困惑。 我正在使用sqlite。
光标游标= qb.query(db,sqlSelect,“ firstName LIKE?or lastName LIKE?”,new String [] {“%” +名称+“%”,“%” +名称+“%”}, null,null,null);
当我使用乔·鲍勃(Joe Bob)搜索时,通过该查询,我可以做到
'Joe'返回Joe Bob
“鲍勃”返回乔·鲍勃
但不是'Joe Bob'
所以只想找到一种搜索firstName''lastName的方法,但是我没有运气
答案 0 :(得分:0)
您似乎想将名字和姓氏串联起来。
您可以使用 ||
进行此操作,因此您的基础查询可能是:-
SELECT firstName, lastName, firstName||' '||lastName AS name_in_full WHERE firstName LIKE ? OR lastName LIKE ?
要供 query 方法使用,请将 sqlSelect 设置为
sqlSelect = "firstName,lastName,firstName||' '||lastName AS name_in_full";
如果您要查找的只是两者的组合,例如您有
之类的行Bob Hope
Joe Joe
Bob Bob
Joe Bob
,您想找到1个 Joe Bob 行,即 Joe Bob ,但没有其他行了,而不是 OR 使用 AND
即
Cursor cursor = qb.query(
db,
sqlSelect,
"firstName LIKE ? AND lastName LIKE ?", //<<<<<<<<<< OR change to AND
new String[]{"%" + name + "%", "%" + name + "%"},
null, null, null
);
答案 1 :(得分:0)
您只需要一个参数:
Cursor cursor = qb.query(
db,
sqlSelect,
"firstName || ' ' || lastName LIKE ?",
new String[]{"%" + name + "%"},
null, null, null
);