Android sqlite搜索两列

xghobddn  于 2023-01-31  发布在  SQLite
关注(0)|答案(2)|浏览(135)

我对如何搜索两个独立的列感到有点困惑。我使用的是sqlite。

Cursor cursor = qb.query(db, sqlSelect, "firstName LIKE ? OR lastName LIKE ?" , new String[]{"%" + name + "%", "%" + name + "%"}, null, null, null);

当我使用Joe Bob进行搜索时,使用该查询我可以
'乔'返回乔鲍勃
“鲍勃”返回乔·鲍勃
但不是“乔·鲍勃”
所以只是想找到一种方法来搜索firstname“”lastname,但我没有运气

nukf8bse

nukf8bse1#

您只需要1个参数:

Cursor cursor = qb.query(
    db, 
    sqlSelect, 
    "firstName || ' ' || lastName LIKE ?", 
    new String[]{"%" + name + "%"}, 
    null, null, null
);
2j4z5cfb

2j4z5cfb2#

您似乎要将名和姓连接起来。
您可以使用**||**执行此操作,因此基础查询可以是:-

SELECT firstName, lastName, firstName||' '||lastName AS name_in_full WHERE firstName LIKE ? OR lastName LIKE ?
  • ?表示所提供的值(因此,上面的代码无法按预期工作)。
  • 您可能希望也可能不希望firstName和lastName列出现在生成的游标中
  • 游标将具有名为name_in_full的列,并且这两个名称将在该列中连接。

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

    • 一米一米一**
    • 根据需要省略名字和姓氏以及相应的分隔逗号 *

问题的其他解释

如果您想要查找并且仅查找两者的组合,例如,您有如下行

Bob Hope
Joe Joe
Bob Bob
Joe Bob

并且您希望查找1*Joe Bob*行,即Joe Bob,但不查找其他行,则使用AND代替OR

Cursor cursor = qb.query(
    db, 
    sqlSelect, 
    "firstName LIKE ? AND lastName LIKE ?", //<<<<<<<<<< OR change to AND
    new String[]{"%" + name + "%", "%" + name + "%"}, 
    null, null, null
);

相关问题