如何使用带有列名的like关键字在sqlite中进行查询?

问题描述

假设我在sqlite数据库中有下表

具有列A1和A2的表名A

enter image description here

具有列B1和B2的表名B

enter image description here

我想查询如下

SELECT A1 FROM A,B WHERE A.A2 LIKE '%'+B.B2+'%' AND B.B1 = 1

我需要2行的结果包含1,4

但是总是返回0行。

解决方法

SQLite中的字符串连接运算符为||。您可以将其表示为JOIN

SELECT A1
FROM A JOIN
     B 
     ON A.A2 LIKE '%' || B.B2 || '%' 
WHERE B.B1 = 1;

请注意,|| SQL标准字符串连接运算符。 +仅在Microsoft拥有的少数几个数据库(大部分)中超载。

,

对于此样本数据,可能出现以下情况:

A.A2 LIKE '%' || B.B2 || '%'

将起作用,但通常条件应包括项目的分隔符'/'

例如,如果您在A中有一行,其中A2等于'\aa\bb\',那么如果您搜索'a',则上述条件将返回错误的结果,因为{{ 1}}是'\aa\bb\' LIKE '%a%'
您可以检查here怎么会得到错误的结果。

因此您必须使用以下查询:

TRUE

请参见demo
结果:

SELECT DISTINCT A1
FROM A INNER JOIN B 
ON A.A2 LIKE '%/' || B.B2 || '/%' 
WHERE B.B1 = 1;