sql字段里有逗号隔开的数据,怎么取值

sql字段里有逗号隔开的数据,怎么取值,第1张

sql字段有逗号隔开,数据取值的方法。

如下参考:

1.查询数据库表的所有字段,直接使用select语句,如下图。

2.查询数据库表部分的字段,可以使用select字段命令,从数据库表中选择字段名度。

3.根据查询的条件,在where之后使用条件,从数据库表中选择字段名所在的条件。

4.使用distinct命令查询数据库字段,以记录未重复的结果,如下图所示。

5.查询数据库表数据之前有多少条,可以使用top命令,从数据库表中选择*号。

6.查询数据库表有时为了区分字段,需要回答字段名,可以用as,从数据库表中选择字段名作为字段名。

如果在内存中处理:

正则表达式

过滤掉就可以了;

如果想要彻底去除,则可以在数据库中处理:

update

table

set

字段=replace(字段,'

特殊符号

','')

将特殊符号全部去掉,你可以写一个脚本在数据库中执行一下

?

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

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)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9620121.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存