如何使用带有列名的 like 关键字在 sqlite 中查询?
How to query in sqlite using like keyword with column name?
假设我在 sqlite 数据库中有以下 table
Table 名称 A,A1 和 A2 列
Table 名称 B,B1 和 B2 列
我想查询如下
SELECT A1 FROM A, B WHERE A.A2 LIKE '%'+B.B2+'%' AND B.B1 = 1
我需要 2 行的结果,其中包含 1,4
但总是 returns 0 行。
SQLite 中的字符串连接运算符是 ||
。您可以将其表示为 JOIN
:
SELECT A1
FROM A JOIN
B
ON A.A2 LIKE '%' || B.B2 || '%'
WHERE B.B1 = 1;
请注意,||
是 SQL 标准 字符串连接运算符。 +
在微软拥有的少数数据库中超载(大部分)。
对于此样本数据,条件可能如下:
A.A2 LIKE '%' || B.B2 || '%'
会起作用,但一般情况下,条件应包括项目的分隔符 '/'
。
例如,如果您在 A
中有一行 A2
等于 '\aa\bb\'
,那么如果您搜索 [=17],上述条件将 return 不正确的结果=], 因为 '\aa\bb\' LIKE '%a%'
是 TRUE
.
您可以查看 here 如何得到错误的结果。
所以你必须使用这个查询:
SELECT DISTINCT A1
FROM A INNER JOIN B
ON A.A2 LIKE '%/' || B.B2 || '/%'
WHERE B.B1 = 1;
参见demo。
结果:
> | A1 |
> | -: |
> | 1 |
> | 4 |
假设我在 sqlite 数据库中有以下 table
Table 名称 A,A1 和 A2 列
Table 名称 B,B1 和 B2 列
我想查询如下
SELECT A1 FROM A, B WHERE A.A2 LIKE '%'+B.B2+'%' AND B.B1 = 1
我需要 2 行的结果,其中包含 1,4
但总是 returns 0 行。
SQLite 中的字符串连接运算符是 ||
。您可以将其表示为 JOIN
:
SELECT A1
FROM A JOIN
B
ON A.A2 LIKE '%' || B.B2 || '%'
WHERE B.B1 = 1;
请注意,||
是 SQL 标准 字符串连接运算符。 +
在微软拥有的少数数据库中超载(大部分)。
对于此样本数据,条件可能如下:
A.A2 LIKE '%' || B.B2 || '%'
会起作用,但一般情况下,条件应包括项目的分隔符 '/'
。
例如,如果您在 A
中有一行 A2
等于 '\aa\bb\'
,那么如果您搜索 [=17],上述条件将 return 不正确的结果=], 因为 '\aa\bb\' LIKE '%a%'
是 TRUE
.
您可以查看 here 如何得到错误的结果。
所以你必须使用这个查询:
SELECT DISTINCT A1
FROM A INNER JOIN B
ON A.A2 LIKE '%/' || B.B2 || '/%'
WHERE B.B1 = 1;
参见demo。
结果:
> | A1 |
> | -: |
> | 1 |
> | 4 |