使用逗号分隔的字符串连接表(使用 WHERE)



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

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

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

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

但它不能正常工作,例如,来自 B.colY 的值 2 出现在表 A.colX 中的每个字符串中。

最后的例子是我想要实现的:

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

你对此有什么想法吗?

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

即从 A.colX 中删除空格,在前后添加一个逗号,然后用逗号对 B.colY 进行like

||以 ANSI SQL 方式串联,但某些产品使用 CONCAT+ 代替。

您可以将字符串拆分((成一个数组,然后取消嵌套((以为每个部分生成单独的行,然后执行常规连接。

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

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

相关内容

  • 没有找到相关文章

最新更新