从字符串中选择不同的值

时间:2018-03-16 15:01:32

标签: mysql sql mysql-workbench

我有一个包含少量代码的字符串的表。

我需要从字符串中查询不同的代码。

这就是表格的样子(id - > string):

578244-->   [Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE]]

578649-->   [Message [code=1503, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=9002, source=FILE]]

578773-->   [Message [code=1503, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE]]

578969-->   [Message [code=0500, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=2502, source=FILE], Message [code=9002, source=FILE]]

我需要的结果是:

578244 --> 2502
578649 --> 1503,2502,9002
578773 --> 1503,2502
578969 --> 0500,9002

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

SELECT if(a=b,a,concat(a,',',b)) as results from(

select right(substring_index('[Message [code=2502, source=FILE], Message [code=2502,source=FILE], Message [code=2502, source=FILE], Message [code=1111, source=FILE], Message [code=2502, source=FILE]]',', s',1),4) as a,

right(substring_index('[Message [code=2502, source=FILE], Message [code=2502,source=FILE], Message [code=2502, source=FILE], Message [code=1111, source=FILE], Message [code=2502, source=FILE]]'
,', s',2),4) as b

) tablename;

当然,你必须适应你的#34;列#34;并适应IF声明。