Snowflake cloud data platform 雪花模式匹配与内部连接

Snowflake cloud data platform 雪花模式匹配与内部连接,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,在snowflake中,我们可以基于regex/substring而不是完全相等,在两个表之间的列上联接吗 例如,在表A/列A和表B/列B中,获取列A是列B的子字符串的所有记录 我提到了REGEXP_SUBSTR、SUBSTR、SUBSTRING,并包含雪花函数,但不知道如何将其用作内部联接的一部分。您可以使用SUBSTRING、charindex函数,可能还有一些REGEXP命令,这里有几个过于简单的示例 CREATE TABLE table_a (column_a VARCHAR(100))

在snowflake中,我们可以基于regex/substring而不是完全相等,在两个表之间的列上联接吗

例如,在表A/列A和表B/列B中,获取列A是列B的子字符串的所有记录


我提到了REGEXP_SUBSTR、SUBSTR、SUBSTRING,并包含雪花函数,但不知道如何将其用作内部联接的一部分。

您可以使用SUBSTRING、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