如何使用SUBSTRING_INDEX()从字符串中获取多个值

时间:2017-09-27 02:49:30

标签: mysql string indexing split substring

我有一个表格,我提取一些值,一个列值可以包含

'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

由于

1 个答案:

答案 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;