将数据分解为mysql中的列

时间:2012-06-11 17:53:08

标签: mysql

我有一个列,我想创建一个包含多列的查询。

例如,我有测试列。

此列的数据如下所示:

record1 => **option1|value1;option2|value2**
record2 => **option3|value3**
record3 => **option3|value3;option1|value1;option2|value2;option4|value4**

选项和值的数量未定义。

我希望将这一个测试列分成多个选项,如下所示:

option1   option2   option3  option4
'value1'  'value2'  'value3'  
                    'value3'
'value1'  'value2'  'value3' 'value4'

我的桌子是这样的:

    id  name    options
    1   name    age|12;color|red;active|yes;car|no
    2   name    age|15;member|yes

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以编写一个custom MySQL function called user defined function,可以接收变量名称和要搜索的值,然后根据需要返回行或ID等。

在该函数中,您需要遍历只读游标中的所有行,并使用SUBSTRING_INDEX()分别获取值并检查匹配。

如果您需要进一步的帮助,请告诉我。

有关更多信息,请查看string functions here的MySQL手册。

来自上述链接的用户评论的摘录可能有助于您编写该函数: 这会将IP地址(“a.b.c.d”)拆分为4个相应的八位字节:

SELECT
`ip` , 
SUBSTRING_INDEX( `ip` , '.', 1 ) AS a,
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', 2 ),'.',-1) AS b, 
SUBSTRING_INDEX(SUBSTRING_INDEX( `ip` , '.', -2 ),'.',1) AS c,
SUBSTRING_INDEX( `ip` , '.', -1 ) AS d
FROM log_table