我有一个列,我想创建一个包含多列的查询。
例如,我有测试列。
此列的数据如下所示:
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
谢谢!
答案 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