在mysql中将数据拆分为列
我有一个列,我想创建一个包含多个列的查询 例如,我有test列 此列的数据如下所示:在mysql中将数据拆分为列,mysql,Mysql,我有一个列,我想创建一个包含多个列的查询 例如,我有test列 此列的数据如下所示: record1 => **option1|value1;option2|value2** record2 => **option3|value3** record3 => **option3|value3;option1|value1;option2|value2;option4|value4** 选项和值的数量未定义 我想让这一个测试列分成如下选项: option1 option2
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
我的桌子是这样的:
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
谢谢 您可以编写一个函数,它可以接收要搜索的变量名和值,然后根据需要返回行或ID等
在该函数中,您将需要在只读游标中循环所有行,并使用分别获取值并检查匹配
如果您需要进一步的帮助,请告诉我
有关更多信息,请参阅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
您可以编写一个函数,该函数可以接收变量名和要搜索的值,然后根据需要返回行或ID等
在该函数中,您将需要在只读游标中循环所有行,并使用分别获取值并检查匹配
如果您需要进一步的帮助,请告诉我
有关更多信息,请参阅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
是否有理由不能将值实际存储为单独的列?您的问题是如何将数据从表中的一列移动到该表中的多列,还是如何创建包含多列的表?还有,你能分享你的表格模式吗?是的,我的数据库是这样定义的。它有很多Entry。还有这个方法的系统编程。@NathanielFord:我想在这个列中搜索一个选项值。例如,我想搜索option1=somevalue。恐怕这不太清楚。当你说“this”列时,你应该指定你指的是哪一列。您也没有回答您是否有要处理的旧数据,或者您根本不知道如何设置包含更多列的表。是否有原因不能将值存储为单独的列?您的问题是如何将数据从表中的一列移动到该表中的多列,或者您的问题是如何创建具有多个列的表?还有,你能分享你的表格模式吗?是的,我的数据库是这样定义的。它有很多Entry。还有这个方法的系统编程。@NathanielFord:我想在这个列中搜索一个选项值。例如,我想搜索option1=somevalue。恐怕这不太清楚。当你说“this”列时,你应该指定你指的是哪一列。您也没有回答您是否有要处理的旧数据,或者您根本不知道如何设置包含更多列的表。tnx somnath。但我不知道我有多少个数据块。在ip地址中,我们有4个数据块,但在我的表中,可能有10个选项和。tnx somnath。但我不知道我有多少个片段。在ip地址中,我们有4个片段,但在我的表中,可能有10个选项和。