首页 > 解决方案 > Oracle - 加入逗号分隔的数据

问题描述

我有两张桌子。

1.Table A                       2.Table B

  **A.Class**                   **B.ID**
  P,H,P0101                      P0101
  p                              P
  H
  P0101

我需要结果

   B.ID             A.Class
   P0101            P,H,P0101
   P0101            P0101
   P                P,H,P0101
   P                P 

非常感谢。

标签: sqloracle

解决方案


您可以将要匹配的 和包含要匹配class的字符串包装在分隔符中,以确保匹配完整,然后在子字符串匹配时加入:id,id

SELECT b.id, a.class
FROM   A
       INNER JOIN B
       ON ( ','||a.class||',' LIKE '%,'||b.id||',%' )

其中,为您提供样本数据:

CREATE TABLE a ( class ) AS
SELECT 'P,H,P0101' FROM DUAL UNION ALL
SELECT 'P' FROM DUAL UNION ALL
SELECT 'H' FROM DUAL UNION ALL
SELECT 'P0101' FROM DUAL;

CREATE TABLE B ( id ) AS
SELECT 'P0101' FROM DUAL UNION ALL
SELECT 'P' FROM DUAL;

输出:

ID 班级
P0101 P,H,P0101
P0101 P0101
P,H,P0101

db<>在这里摆弄


推荐阅读