sqflite:如何在同一个 rawQuery 中创建一个包含两列的 SELECT

sqflite: How to make a SELECT with two columns inside the same rawQuery

我想使用 OR 运算符接收来自 2 列的信息,但我无法查看。

我有我的专栏 title 和我的专栏 categoria。我想制作一个影响两列的 select,如下所示:selec * from title OR categoria where ...

这是我的:

final List<Map<String, dynamic>> queryResult = await db
    .rawQuery('SELECT * FROM todos WHERE title like ?', ['%'+queryCourse+'%']); //here i want to complete the select with both columns

您需要 UNION ALL 运算符。

Select lastName from Employees
UNION ALL
Select lastName from Patients

https://www.sqlitetutorial.net/sqlite-union/

他们的例子是:

SELECT FirstName, LastName, 'Employee' AS Type
FROM employees
UNION
SELECT FirstName, LastName, 'Customer'
FROM customers;

注意,列必须“匹配”。这里我使用“lastName”。

与列不同,您不能“合并所有”。在 sqlitetutorial 的例子中,第三列是一个“字符串”......它可以有不同的值,但它必须是相同的“data-type”和 SELECT 中的序号位置声明。

请务必阅读有关 UNION 和 'UNION ALL' 之间差异的文档。

对于“where”条件,您必须指定 UNION ALL 的每个“部分”

https://www.techonthenet.com/sqlite/union_all.php

SELECT department_id, department_name
FROM departments
WHERE department_id >= 10
UNION ALL
SELECT employee_id, last_name
FROM employees
WHERE last_name = 'Anderson'

;

对 2 列使用 OR 运算符:

final List<Map<String, dynamic>> queryResult = await db
    .rawQuery('SELECT * FROM todos WHERE title LIKE ? OR categoria LIKE ?', 
              ['%'+queryCourse+'%', '%'+queryCourse+'%']);

或:

final List<Map<String, dynamic>> queryResult = await db
    .rawQuery("SELECT * FROM todos WHERE title LIKE '%' || ? || '%' OR categoria LIKE '%' || ? || '%'", 
              [queryCourse, queryCourse]);

我假设您将对两列使用相同的参数 queryCourse
如果没有,则将参数更改为您已有的参数。