gpt4 book ai didi

java - 在 sqlite 表中搜索数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:55 27 4
gpt4 key购买 nike

我有一张这样的 table :

      database.execSQL("CREATE  TABLE IF NOT EXISTS food_table (food_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , food_name CHAR, food_raw CHAR)");

我有一个像这样的字符串数组:

    public static ArrayList<String> rawsNames = new ArrayList<String>();

现在我想在我的表中搜索,如果所有生食都在 rawsNames 中,则返回 food_name 。

我这样做:

String raws = AdapterNotes.rawsNames.toString().replace("]", "").replace("[", "");
Cursor cursor = G.database.rawQuery("select * from food_table WHERE food_raw LIKE '%" + raws + "%' ", null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("food_name"));

但是当食物的原料发生变化时,它就不起作用了。

请帮助我。

最佳答案

food_table 似乎包含以下字段:

food_id :分配给食品的唯一 ID
food_name :食品名称
food_raw :成分由 ,

分隔

现在,由于成分可能相同,但其顺序与数据库中存储的不同,简单的 WHERE LIKE %"a, b, c"% 将不起作用,因为 b, a, c 也是同一食物的有效成分(只是顺序不同)。

因此,您需要匹配每种单独成分,而不是所有成分作为一个整体:

String req = "";
for(String rawName : rawNames)
req += " food_raw LIKE %"+rawName+"% AND";
if(req.length() > 4)
req = req.substring(0, req.length()-4); // to remove last " AND"
String query = "SELECT * FROM food_table WHERE "+req;

使用查询,您应该能够获取食物名称,无论项目顺序如何。

关于java - 在 sqlite 表中搜索数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29397280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com