如何使用带有列名的 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 |