0

我有两张表,我们称它为表 A 和表 B。它们看起来像:

A.col1        A.colX            B.colY
1             123               123
2             234, 123          234     
3             2, 52352          2
                                52352

我要做的是对JOIN他们,最有可能使用WHERE,因为我的环境不支持非 equi 连接。我有 table 的问题A,其中数字是字符串。我尝试了解决方案:

SELECT... 
FROM A, B
WHERE A.colX LIKE concat('%', B.colY, '%')

但它不能正常工作,例如 value 2fromB.colY出现在 table 的每个字符串中A.colX

在最后的示例中,我想要实现的目标:

          output
1         123 -------> 123
2         234, 123 --> 234
1         234, 123 --> 123
3         2, 52352 --> 2
3         2, 52352 --> 52352

你对此有什么想法吗?

4

2 回答 2

2
where (',' || replace(A.colX,' ','') || ',') LIKE ('%,' || B.colY || ',%')

即从 A.colX 中删除空格,在前后添加一个逗号,然后对likeB.colY 也使用逗号。

||是连接ANSI SQL方式,有些产品使用CONCATor+来代替。

于 2015-10-02T12:11:55.380 回答
0

您可以将字符串 split() 成一个数组,然后 unnest() 为每个部分生成单独的行,然后执行常规连接。

https://prestodb.io/docs/current/functions/string.html#split

https://prestodb.io/docs/current/sql/select.html#unnest

于 2015-10-02T14:59:26.543 回答