1、oracle将以逗号隔开的字符串拆成多行
create table USERS
(
ID VARCHAR2(10),
NAME VARCHAR2(20),
HOBBY VARCHAR2(200)
);
INSERT INTO INDBADMIN.USERS (ID, NAME, HOBBY) VALUES ('1', '张三', '篮球,足球,足球');
INSERT INTO INDBADMIN.USERS (ID, NAME, HOBBY) VALUES ('2', '李四', '篮球,足球,乒乓');
INSERT INTO INDBADMIN.USERS (ID, NAME, HOBBY) VALUES ('3', '王五', '乒乓,羽毛球');
INSERT INTO INDBADMIN.USERS (ID, NAME, HOBBY) VALUES ('4', '赵六', null);
INSERT INTO INDBADMIN.USERS (ID, NAME, HOBBY) VALUES ('5', '孙七', '乒乓');
2、实现代码
SELECT distinct a.id, a.name, REGEXP_SUBSTR(a.hobby, '[^,]+', 1, LEVEL) AS hobby
FROM users a
CONNECT BY REGEXP_SUBSTR(a.hobby, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR a.id = a.id
AND PRIOR SYS_GUID() IS NOT NULL;
3、实现效果
![]()