在雪花中,我们可以基于正则表达式/子字符串而不是完全相等地加入2个表之间的列吗?
例如,在表A /列A和表B /列B中,获取所有记录,其中列A是列B的子字符串。
我提到了雪花的REGEXP_SUBSTR,SUBSTR,SUBSTRING和CONTAINS函数,但无法弄清楚如何将其用作Inner JOIN。
答案 0 :(得分:2)
您可以使用子字符串,charindex函数以及可能的一些regexp命令来完成此操作,这是一些非常简单的示例。
CREATE TABLE table_a (column_a VARCHAR(100));
INSERT INTO table_a VALUES ('hello world'),('testing 123'),
('I like Jelly'),('this is a good question');
CREATE TABLE table_b (column_b VARCHAR(100));
INSERT INTO table_b VALUES ('this is table b'),('world'),
('jelly'),('Netflix or Hulu?'),('Goodbye');
SELECT a.*
FROM table_a a
INNER JOIN table_b b
ON SUBSTR(a.column_a, CHARINDEX(' ', a.column_a) + 1, length(a.column_a))
= b.column_b;
--1 row selected, 'hello world'
SELECT a.*, b.*
FROM table_a a,
table_b b
WHERE CHARINDEX(UPPER(b.column_b), UPPER(a.column_a)) > 0;
--2 rows selected, 'hello world'/world & 'I like Jelly'/jelly