博客
关于我
mysql逗号分隔的字符串如何搜索
阅读量:789 次
发布时间:2023-02-13

本文共 815 字,大约阅读时间需要 2 分钟。

数据库一对多关系设计中,经常需要将多个编号用逗号分隔存储于一个字段中。这种设计虽然便于数据存储,但在查询操作时可能会带来一些挑战。以下将详细介绍两种常用的查询方法。

数据库存储示例

以下是几个典型的数据库记录:

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');

查询方法一:使用find_in_set函数

这种方法通过数据库内置的find_in_set函数来查找特定值。例如,可以查询pnum字段中包含3或9的记录:

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

查询方法二:使用CONCAT函数

另一种方法是将pnum字段转换为字符串格式,通过CONCAT函数添加逗号后再进行匹配。例如,可以查找包含11的记录:

SELECT * FROM oa_student_archives WHERE CONCAT(',', p_project, ',') LIKE '%,11,%';

选择合适的查询方式

以上两种方法均可实现需求,但具体选择哪一种取决于实际业务需求。如果需要按单个值查询,find_in_set可能更高效;如果需要按特定格式查找,可以使用CONCAT方法。

通过以上方法,可以方便地对一对多关系的多个编号进行查询操作,满足实际需求。

转载地址:http://imdfk.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(23)——MySQL统计函数和分组查询
查看>>
Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询
查看>>
Mysql学习总结(25)——MySQL外连接查询
查看>>
Mysql学习总结(26)——MySQL子查询
查看>>
Mysql学习总结(37)——Mysql Limit 分页查询优化
查看>>
Mysql学习总结(38)——21条MySql性能优化经验
查看>>
Mysql学习总结(45)——Mysql视图和事务
查看>>
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
查看>>
Mysql学习总结(59)——数据库分库分表策略总结
查看>>
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
查看>>
Mysql学习总结(79)——MySQL常用函数总结
查看>>
Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
查看>>
Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
查看>>
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
查看>>
MySQL定义和变量赋值
查看>>
mysql实战01|基础架构:一条SQL查询语句是如何执行的?
查看>>
Mysql实战之数据备份
查看>>
mysql实现成绩排名
查看>>
Mysql客户端中文乱码问题解决
查看>>
mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
查看>>