我有一个表格,我提取一些值,一个列值可以包含
'FLSD202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT'
我想将它们拆分成
FLSD202 AS first column
-D-B-D-AB-C1-NN-A-N-LA-J-NN AS Second column
/UM/H7/SCT AS third column
这是我的脚本,但我无法获得我想要的结果
SELECT 'FLSD202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT', SUBSTRING_INDEX(SUBSTRING_INDEX('FLXA202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT', '-',1), '-', -1) FirstColumn,
CONCAT('-', SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX('FLSD202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT', '/',1), '/', -1), '-',-1)) SecondColumn,
CONCAT('/', SUBSTRING_INDEX(SUBSTRING_INDEX('FLSD202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT', '/',3), '/', -1)) ThirdColumn
我想将此用于所有值,而不仅仅是一个字段..
'-'
(短划线)是动态的,'/'
(斜线)是动态的,例如:
SSS145-SS3/POP, KEEE-CDE0/NO/SA, WXAE-C-D/E/G, SAD-SEU-SFX/OPS
由于
答案 0 :(得分:0)
我认为以下代码可以帮助您完成您的要求。
SET @a = 'FLSD202-D-B-D-AB-C1-NN-A-N-LA-J-NN/UM/H7/SCT';
SET @dash_start_position = LOCATE('-',@a);
SET @slash_start_position = LOCATE('/',@a);
SELECT SUBSTRING(@a, 1, @dash_start_position-1) as First, IF(@slash_start_position IS NOT NULL AND @slash_start_position > 0, SUBSTRING(@a, @dash_start_position, @slash_start_position - @dash_start_position), SUBSTRING(@a, @dash_start_position)) as Second,SUBSTRING(@a, @slash_start_position) as Third;