简体   繁体   English

在 Big Query 的两列之间使用 LIKE

[英]Using LIKE between 2 columns in Big Query

I am having 2 tables ie tableA and tableB .我有 2 个表,即tableAtableB I am fetching colA from tableA and colB from tableB .我正在从 tableA 中获取 colA从 tableB中获取 colB 。 Now I want to join tableA and tableB on colA where colA is LIKE colB.现在我想在 colA 上加入 tableA 和 tableB,其中 colA 类似于 colB。

eg if colB is having a value " abcxyzijk " and colA is having a value " xyz " then also it should join.例如,如果 colB 的值为“ abcxyzijk ”而 colA 的值为“ xyz ”,那么它也应该加入。 The join should not be limited to colA = colB .联接不应限于 colA = colB

I tried using the below code but it's giving only the records for which colA matches exactly with colB.我尝试使用下面的代码,但它只给出了 colA 与 colB 完全匹配的记录。

SELECT tableA.colA,  tableB.colB
FROM TableB tableB
INNER JOIN TableA tableA
ON tableB.colB LIKE tableA.colA

Is there any way of using LIKE between two columns in Big Query?有什么方法可以在 Big Query 的两列之间使用 LIKE 吗?

You can instead use CROSS JOIN then filter the data using HAVING and REGEXP_CONTAINS .您可以改为使用 CROSS JOIN,然后使用HAVINGREGEXP_CONTAINS过滤数据。

WITH Roster AS
 (SELECT 'Adams' as LastName, 'asdf' as SchoolID UNION ALL
  SELECT 'Buchanan', 'qwe' UNION ALL
  SELECT 'Coolidge', 'zxc' UNION ALL
  SELECT 'Davis', 'eryvbnqc' UNION ALL
  SELECT 'Eisenhower', 'pyimkmhjrty')

, TeamMascot AS
 (SELECT 'asdf' as SchoolID, 'Jaguars' as Mascot UNION ALL
  SELECT 'qwe', 'Knights' UNION ALL
  SELECT 'zxc', 'Lakers' UNION ALL
  SELECT 'vbn', 'Mustangs' UNION ALL
  SELECT 'rty', 'Cavs')

SELECT ros.LastName,ros.SchoolID, mas.SchoolID,mas.Mascot FROM Roster as ros
CROSS JOIN TeamMascot as mas
GROUP BY 1,2,3,4
HAVING REGEXP_CONTAINS(ros.SchoolID, mas.SchoolID)

Output: Output:

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM