Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中将数据拆分为列_Mysql - Fatal编程技术网

在mysql中将数据拆分为列

在mysql中将数据拆分为列,mysql,Mysql,我有一个列,我想创建一个包含多个列的查询 例如,我有test列 此列的数据如下所示: record1 => **option1|value1;option2|value2** record2 => **option3|value3** record3 => **option3|value3;option1|value1;option2|value2;option4|value4** 选项和值的数量未定义 我想让这一个测试列分成如下选项: option1 option2

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

例如,我有test

此列的数据如下所示:

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个选项和。