Как запросить базу данных sqflite с помощью оператора LIKE и подстановочного знака% или * sql - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь запросить таблицу компаний с использованием companyName, я хочу получить компании, чьи companyName (и) содержат строку запроса, а не только компании, чьи companyName являются точными совпадениями моих строк запроса. Если бы я использовал sql, я бы использовал --- ГДЕ 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;
}

Когда я добавляю%, я получаю синтаксическую ошибку.

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Это код, который сработал идеально для меня.

res = await db.query(
  "Companies",
  where: "name LIKE '%$?%'"
  whereArgs: [title]
);
0 голосов
/ 05 июня 2019

работает следующий код:

var res = await db.rawQuery("SELECT * FROM Companies WHERE name LIKE '%$filterCriteria%'");
...