比较2个表中的子字符串

时间:2019-04-25 16:19:41

标签: sql sqlite

我尝试运行一个查询,该查询比较另一列中是否存在来自列的子字符串:

表“ Tracker”包含具有跟踪域的“ Url”列。 表“抓取”包含带有网址的列“ TargetUrl”。

我想检查TargetUrl中是否存在跟踪域,如果有,请加入它们,以便将两个表中的所有数据都存储在一起。

表格大致如下:

跟踪器表

+----+---------------+----------------+-------------------------------+
| ID | Category      | Entity         |Urls                           |
+----+---------------+----------------+-------------------------------+
|  1 | Sessionreplay | Hotjar         | hotjar.com                    |
|  2 | Analytics     | Sometool       | somesite.com                  |
|  3 | Adverts       | Someothertool  | someothersite.com             |
+----+---------------+----------------+-------------------------------+

爬网表

+----+---------------+---------+------+-------------------------------+
| ID | Mainpage      | Some Data      |TargetUrl                      |
+----+---------------+---------+------+-------------------------------+
|  1 | xyz.com       | 111111         | https://script.hotjar.com/1232|
|  2 | yzx.com       | 22222222       | https://somesite.com/423423   |
|  3 | zxy.com       | 3333333333333  | notrackingscript.com          | 
+----+---------------+----------------+-------------------------------+

这就是我走了多远

SELECT * FROM Crawl WHERE Crawl.TargetUrl like '%hotjar.com%' 

从Table Crawl中返回所有内容,其中TargetUrl列中存在“ hotjar.com”。

SQL Gurus的任何人都可以通过该查询帮助新手吗?

1 个答案:

答案 0 :(得分:0)

您可以使用LIKE运算符联接表:

select *
from crawl c inner join tracker t
on c.targeturl like '%' || t.urls || '%'

这将返回两个表中的所有列。
您可以通过选择以下列来更改它:

select t.id, t.category, c.mainpage, ...

联接的条件是column tracker.urls包含在列crawl.targeturl中。