1

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

例如,我有测试列。

该列的数据如下所示:

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

谢谢!

4

1 回答 1

1

您可以编写一个称为用户定义函数的自定义 MySQL 函数,该函数可以接收要搜索的变量名称和值,然后根据需要返回行或 ID 等。

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

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

有关更多信息,请查看此处的字符串函数的 MySQL 手册。

来自上述链接的用户评论摘录可能有助于您编写函数:这会将 IP 地址(“abcd”)拆分为 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
于 2012-06-11T18:31:05.143 回答