SQL 使用 WHERE 和 SUBSTR 左连接

SQL LEFT JOIN with WHERE and SUBSTR

我想使用 SQL 左连接两个表,但仅在公共列符合子字符串条件的情况下。如何实现?

CREATE TABLE MY_JOIN AS
    SELECT A.*, B.*
FROM DATA.TABLE_B AS B
LEFT JOIN DATA.TABLE_A AS A ON A.COMMON = B.COMMON
WHERE SUBSTR(A.COMMON,1,5) IN ('90210', '90211', '90212')

还有其他问题解决了使用带有 where 子句的左连接但没有具体解决在 where 子句中使用子字符串函数的问题。

只需将条件移动到 LEFT JOIN 子句

CREATE TABLE MY_JOIN AS
    SELECT A.*, B.*
FROM DATA.TABLE_B AS B
LEFT JOIN DATA.TABLE_A AS A ON A.COMMON = B.COMMON 
                            and SUBSTR(A.COMMON,1,5) IN ('90210', '90211', '90212')

在请求评论中,您已阐明您只想 select 与给定字符串匹配的行。在这种情况下,在 b.common 上应用 SUBSTR 函数,而不是 a.common:

CREATE TABLE my_join AS
SELECT a.*, b.*
FROM data.table_b AS b
LEFT JOIN data.table_a AS a ON a.common = b.common
WHERE SUBSTR(b.common, 1, 5) IN ('90210', '90211', '90212');