我有表培训,我想将Training_name列值拆分为多行:
SLNO Category Training_name
1 A 1,5,9,15,12,16
2 B 2,6,10,17
3 C 1,3,7,19,14,18
我使用下面的查询,但使用此查询我只能拆分为2行?
SELECT training.SLNO,training.CATEGORY, SubString_Index(training.TRAINING_NAME, ',', 1) AS TRAINING_NAME FROM training UNION ALL SELECT training.SLNO,training.CATEGORY, SubString_Index(training.TRAINING_NAME, ',', -1) FROM training
我想获得下面给出的表格,请帮帮我
SLNO Category Training_name
1 A 1
1 A 5
1 A 9
1 A 15
1 A 12
1 A 16
2 B 2
2 B 6
2 B 10
2 B 17
3 C 1
3 C 3
3 C 7
3 C 19
3 C 14
3 C 18
答案 0 :(得分:1)
如果每个训练名称条目都有两个以逗号分隔的值,则此选项可以正常运行。
SELECT
PARENT_SLNO,
RNO,
TRAINING_CATEGORY,
SUBSTRING_INDEX(TRAINING_NAME, ',', 1) AS TRAINING_NAME
FROM yourTable
UNION ALL
SELECT
PARENT_SLNO,
RNO,
TRAINING_CATEGORY,
SUBSTRING_INDEX(TRAINING_NAME, ',', -1)
FROM yourTable
如果要转换整个表,则可以将上述查询选择到新表中,删除旧表,然后重命名新表。如果您的CSV数据可能包含不同数量的逗号,那么我的查询将需要修改,但一般方法可能保持不变。