我有一个表的格式如:
ID    NAME 
-----------------
1    中国;美国;日本
2    广东;广西如何得到
ID     NAME 
-----------------
1       中国
1       美国
1       日本
2       广东
2       广西

解决方案 »

  1.   

    个数不固定,用sql很难处理
    用存储过程吧
    不过你的表设计本身就有问题。
      

  2.   

    数据量小时可以用SQL处理WITH A AS
    (
    SELECT 1 AS ID, '中国;美国;日本' AS NAME FROM DUAL
    UNION
    SELECT 2 AS ID, '广东;广西' AS NAME FROM DUAL
    )
    SELECT DISTINCT ID, 
           SUBSTR(NAME, INSTR(';' || NAME, ';', 1, LEVEL), 2) AS NAME
    FROM A
    CONNECT BY LEVEL <= (LENGTH(NAME) - LENGTH(REPLACE(NAME, ';','')))+1
    ORDER BY ID;
    数据量大建议用其它方法处理
      

  3.   

    出现拆分的时候很麻烦。用sql我写不出来,需要用存储过程。
    我碰到这样情况会再来张表
    id phone对应的