mysql逗号分隔怎么写 mysql逗号隔开拆成多条数据

Mysql 数据字段值是用逗号隔开,如何写SQL语句

1、将传递过来的值进行分割

成都创新互联公司于2013年开始,先为屏山等服务建站,屏山等地企业,进行企业商务咨询服务。为屏山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

用,分割成数组

例如:$var=explode(",",$str);

2、循环数组

3、在循环内查询sql

查询时候

有两种方法

按照sql语法或者PHP语法

sql

find_in_set(str1,str2);

php

strpos(str1,str2,start);

具体语法格式自己搜索一下吧。

mysql列转行(逗号分隔)

mysql查询含逗号的数据,将逗号拆分为多行展示:

原始数据如下:

现在因为新的需求,需要将这些数据转化为如下形式:

假设我们需要处理的表结构为:

使用如下sql语句即可实现需求:

查询的主要思路为,原表与一个包含连续自增长字段的表进行join,得到字符串分隔后的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 语句获得字符串逗号分隔之后得到的数据长度,两表关联之后,会得到相应行数的数据。比如,

在join之后会得到:

之后对查询中的结果,使用substring_index方法进行截取,然后得到我们自己想要的数据。

Mysql 数据字段值是用逗号隔开,如何写SQL语句

1、将传递过来的值进行分割 用,分割成数组

例如:$var=explode(",",$str);

2、循环数组

3、在循环内查询sql

查询时候 有两种方法 按照sql语法或者PHP语法

sql 用 find_in_set(str1,str2);

php 用 strpos(str1,str2,start);

具体语法格式自己搜索一下吧。

来个朋友帮忙解决下MYSQL查询中字段带逗号分割符的问题

?

首先我们建立一张带有逗号分隔的字符串。

CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCHAR(20) NOT NULL,pnum VARCHAR(50) NOT NULL);

然后插入带有逗号分隔的测试数据

INSERT INTO test(pname,pnum) VALUES('产品1','1,2,4');

INSERT INTO test(pname,pnum) VALUES('产品2','2,4,7');

INSERT INTO test(pname,pnum) VALUES('产品3','3,4');

INSERT INTO test(pname,pnum) VALUES('产品4','1,7,8,9');

INSERT INTO test(pname,pnum) VALUES('产品5','33,4');

查找pnum字段中包含3或者9的记录

mysql SELECT * FROM test WHERE find_in_set('3',pnum) OR find_in_set('9',pnum);

+----+-------+---------+

| id | pname | pnum |

+----+-------+---------+

| 3 | 产品3 | 3,4 |

| 4 | 产品4 | 1,7,8,9 |

+----+-------+---------+

2 rows in set (0.03 sec)

使用正则

mysql SELECT * FROM test WHERE pnum REGEXP '(3|9)';

+----+-------+---------+

| id | pname | pnum |

+----+-------+---------+

| 3 | 产品3 | 3,4 |

| 4 | 产品4 | 1,7,8,9 |

| 5 | 产品5 | 33,4 |

+----+-------+---------+

3 rows in set (0.02 sec)

这样会产生多条记录,比如33也被查找出来了,不过MYSQL还可以使用正则,挺有意思的

find_in_set()函数返回的所在的位置,如果不存在就返回0

mysql SELECT find_in_set('e','h,e,l,l,o');

+------------------------------+

| find_in_set('e','h,e,l,l,o') |

+------------------------------+

| 2 |

+------------------------------+

1 row in set (0.00 sec)

还可以用来排序,如下;

mysql SELECT * FROM TEST WHERE id in(4,2,3);

+----+-------+---------+

| id | pname | pnum |

+----+-------+---------+

| 2 | 产品2 | 2,4,7 |

| 3 | 产品3 | 3,4 |

| 4 | 产品4 | 1,7,8,9 |

+----+-------+---------+

3 rows in set (0.03 sec)

如果想要按照ID为4,2,3这样排序呢?

mysql SELECT * FROM TEST WHERE id in(4,2,3) ORDER BY find_in_set(id,'4,2,3');

+----+-------+---------+

| id | pname | pnum |

+----+-------+---------+

| 4 | 产品4 | 1,7,8,9 |

| 2 | 产品2 | 2,4,7 |

| 3 | 产品3 | 3,4 |

+----+-------+---------+

3 rows in set (0.03 sec)

MYSQL列中的数据以逗号隔开,如何查询?

MYSQL列中的数据查询命令:

SELECT *

FROM task_detatils

WHERE FIND_IN_SET( ‘1’, responsible_user)

命令的含义:将含有1的responsible_user列数据全部搜索出来。

采用的是find函数:查找一定范围内元素的个数。查找[first,last)范围内,与toval等价的第一个元素,返回一个迭代器。如果没有这个元素,将返回last。

扩展资料:

其他的查询命令:

在命令后键入搜索的模式,再键入要搜索的文件。其中,文件名列表中也可以使用特殊字符,如“*”等,用来生成文件名列表。

如果想在搜索的模式中包含有空格的字符串,可以用单引号把要搜索的模式括起来,用来表明搜索的模式是由包含空格的字符串组成。

否则,Shell将把空格认为是命令行参数的定界符,而grep命令将把搜索模式中的单词解释为文件名列表中的一部分。在下面的例子中,grep命令在文件example中搜索模式“text file”。

用户可以在命令行上用Shell特殊字符来生成将要搜索的文件名列表。在下面的例子中,特殊字符“*”用来生成一个文件名列表,该列表包含当前目录下所有的文件。该命令将搜索出当前目录下所有文件中与模式匹配的行。

参考资料来源:百度百科-Linux文件内容查询命令

参考资料来源:百度百科-find函数


网站栏目:mysql逗号分隔怎么写 mysql逗号隔开拆成多条数据
链接分享:http://scyanting.com/article/hjsiho.html