我正在尝试使用companyName来查询Companies表,我想获取其companyName包含查询字符串的公司,而不只是其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
);
);
搜索代码
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;
}
添加%时,出现语法错误。
答案 0 :(得分:8)
接受的答案对我来说会导致构建错误。我正在使用sqflite:^ 1.1.7 + 1和flutter:v1.13.5。
从下面的讨论中可以看出,百分比字符应该在参数中而不是查询中,即
res = await db.query(
"Companies",
where: "name LIKE ?"
whereArgs: ['%$title']
);
答案 1 :(得分:1)
这对我来说最终是完美的代码。
string tableData = "Test;One;3;End\nNew line;Two;4;End";
//Target table, to be extended
Word.Table tbl = doc.Tables[1];
Word.Range rngTbl = tbl.Range;
rngTbl.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
//Target for inserting the data (end of the document)
Word.Range rng = doc.Content;
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
rng.Text = tableData;
Word.Table tblExtend = rng.ConvertToTable(";", missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing, missing,
missing, Word.WdDefaultTableBehavior.wdWord8TableBehavior);
//Move the new table content to the end of the target table
tblExtend.Range.Cut();
rngTbl.PasteAppendTable();
答案 2 :(得分:1)
我尝试了上述所有答案,但没有奏效。最后:
await db.query(
"Companies",
where: "name LIKE ?",
whereArgs: ['%$query%']
);
答案 3 :(得分:0)
以下代码有效:
var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE '%$filterCriteria%'");
答案 4 :(得分:0)
您必须使用以下语法: Like“ searched string”
这里是一个例子:
var res =等待db.rawQuery('SELECT * FROM从公司名称类似“%$ filterCriteria%” ');
它与flutter和sqflite一起使用
答案 5 :(得分:0)
使用此
var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE '%?%';", [filterCriteria]);
代替
var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE %?%;", [filterCriteria]);
将条件放在单引号('...')
答案 6 :(得分:0)
这对我有用
var res =等待db.rawQuery(“ SELECT * FROM公司名称为LIKE?”,['%$ filterCriteria%']);