Dil*_*ere 4 dart flutter sqflite
我正在尝试使用 companyName 查询 Companies 表,我想获取 companyName(s) 包含查询字符串的公司,而不仅仅是 companyName 与我的查询字符串完全匹配的公司。如果我使用 sql,我会使用 ---WHERE companyName LIKE %queryString% 语句。所以我的问题是如何在 sqflite 中进行这样的查询?现在我收到一个语法错误,因为 %
表结构
CREATE TABLE Companies(
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT,
website TEXT,
about TEXT,
phone TEXT,
logo TEXT,
created_at TEXT
);
);
Run Code Online (Sandbox Code Playgroud)
搜索代码
Future<List<CompanyModel>> filterCompanies(String filterCriteria) async {
final db =await database;
List<CompanyModel> filteredCompanies = [];
var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE %?%;", [filterCriteria]);
if(res.length !=null){
for (var item in res){
filteredCompanies.add(JobModel.fromDb(item));
}
}
return filteredCompanies;
}
Run Code Online (Sandbox Code Playgroud)
添加 % 时,出现语法错误。
小智 11
我尝试了上面所有的答案,但没有成功。最后:
await db.query(
"Companies",
where: "name LIKE ?",
whereArgs: ['%$query%']
);
Run Code Online (Sandbox Code Playgroud)
hos*_*.ch 10
接受的答案导致我的构建错误。我正在使用 sqflite: ^1.1.7+1 with flutter: v1.13.5。
从下面的讨论中,可以看出百分比字符应该在参数中而不是在查询中,即,
res = await db.query(
"Companies",
where: "name LIKE ?"
whereArgs: ['%$title']
);
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/tekartik/sqflite/issues/316
下面的代码有效:
var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE '%$filterCriteria%'");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5416 次 |
| 最近记录: |