Android sqlite搜索两列

时间:2019-02-27 19:16:29

标签: java android sql sqlite search

我对如何搜索两个单独的列感到有些困惑。 我正在使用sqlite。

光标游标= qb.query(db,sqlSelect,“ firstName LIKE?or lastName LIKE?”,new String [] {“%” +名称+“%”,“%” +名称+“%”}, null,null,null);

当我使用乔·鲍勃(Joe Bob)搜索时,通过该查询,我可以做到

'Joe'返回Joe Bob

“鲍勃”返回乔·鲍勃

但不是'Joe Bob'

所以只想找到一种搜索firstName''lastName的方法,但是我没有运气

2 个答案:

答案 0 :(得分:0)

您似乎想将名字和姓氏串联起来。

您可以使用 || 进行此操作,因此您的基础查询可能是:-

SELECT firstName, lastName, firstName||' '||lastName AS name_in_full WHERE firstName LIKE ? OR lastName LIKE ?
  • 那?表示所提供的值(因此,上述内容将无法正常工作)。
  • 您可能想要或不希望结果游标中的firstName和lastName列
  • 光标将具有一个名为 name_in_full 的列,并且此列将两个名称串联在一起。

要供 query 方法使用,请将 sqlSelect 设置为

sqlSelect = "firstName,lastName,firstName||' '||lastName AS name_in_full";

  • 根据需要省略firstName和lastname以及相应的逗号分隔

问题的替代解释

如果您要查找的只是两者的组合,例如您有

之类的行
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
);