我正在尝试使用 where in clasue 但我收到此错误:
<块引用>无效参数 [1, 2, 3] 类型为 List Only num、String 和 支持 Uint8List。
我的代码:
Database db = await instance.database;
List<Map> maps = await db.query('table',
where: 'categoryID in (?)', whereArgs: [ [1,2,3]]);
从此document
<块引用>特别是,不支持列表(期待 blob 内容)。一种 常见的错误是期望使用 IN (?) 并给出值列表。 这不起作用。相反,您应该一一列出每个参数:
var list = await db.rawQuery('SELECT * FROM my_table WHERE name IN (?, ?, ?)', ['cat', 'dog', 'fish']);
但我的类别随时可能发生变化,所以我无法一一列出每个参数。
答案 0 :(得分:0)
虽然我知道这听起来很痛苦,但不幸的是 SQLite 的工作方式和 sqflite 不做任何 SQL 解析。
您可以尝试以下我个人用来构建适当数量的 ?
的解决方案。
List.filled(inArgsCount, '?').join(',')
例如:
var inArgs = ['cat', 'dog', 'fish'];
var list = await db.query('my_table',
where: 'name IN (${List.filled(inArgs.length, '?').join(',')})',
whereArgs: inArgs);