add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE mytable (
icd VARCHAR(255),
diagnose TEXT);

INSERT INTO mytable VALUES
('A00 1','diagnoseA00 1'),
('B34 2;A00 9;A39 5','diagnoseB34 2;diagnoseA00 9;diagnoseA39 5');
Records: 2  Duplicates: 0  Warnings: 0
SELECT * FROM mytable;
SELECT * FROM seq_1_to_20;
icd diagnose
A00 1 diagnoseA00 1
B34 2;A00 9;A39 5 diagnoseB34 2;diagnoseA00 9;diagnoseA39 5
seq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT DISTINCT
CASE WHEN icd LIKE '%;%'
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(icd,';',seq),';',-1)
ELSE SUBSTRING_INDEX(icd,';',seq) END AS icd2,
CASE WHEN diagnose LIKE '%;%'
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(diagnose,';',seq),';',-1)
ELSE SUBSTRING_INDEX(diagnose,';',seq) END AS diagnose2
FROM mytable m
CROSS JOIN seq_1_to_20 s;

icd2 diagnose2
A00 1 diagnoseA00 1
B34 2 diagnoseB34 2
A00 9 diagnoseA00 9
A39 5 diagnoseA39 5