mysql查询包含字符串的记录,MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法...
首先我们建立一张带有逗号分隔的字符串。
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查询某字段中包含以逗号分隔的字符串的记录方法...相关推荐
- php调用mysql查询结果_php - 在php脚本中处理select查询结果集
在php脚本中执行select查询命令,也是调用mysql_query()函数,但是和执行DML不同的是,执行SELECT 命令后,mysql_query()函数的返回值是一个资源的引用指针(结果集) ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- php 输出数组第一个元素,怎么在php中利用reset() 函数输出数组中的第一个元素
怎么在php中利用reset() 函数输出数组中的第一个元素 发布时间:2021-01-16 09:37:11 来源:亿速云 阅读:66 作者:Leah 本篇文章给大家分享的是有关怎么在php中利用r ...
- MYSQL中的SELECT查询时进行运算
SELECT在mysql中是查询表中的数据的作用,但也可以在查询的时候直接进行运算,然后返回查询后的结果 比如 1 SELECT user,math*(IFNULL(adven,0)) FROM us ...
- SQL server中的SELECT查询语句执行顺序
各位大牛们好第一次写博客有点小激动!以后我会把自己的心得分享给大家,求各种评论 SQL server 中SELSECT查询语句的执行顺序如下: (8) SELECT (9) DISTINCT (1 ...
- MFC中利用CFileDialog选择文件并读取文件所遇到的问题和解决方法
在用MFC编写一个上位机时,需要实现选择和读取一个二进制文件,本来以为很简单的但是在实现过程中遇到很多问题,所幸都一一解决,这里做一下记录. 首先在实现文件选择,在界面上设置一个按钮,并在点击事件函数 ...
- mysql控制台导出查询结果_MySQL 命令行导出、导入Select 查询结果
有的时候需要把在一张表中用 select 语句查询出来的结果保存到另一张结构相同的表中,可以有几种方法来实现: 方法一: 在命令行下使用一对SQL语句完成该操作: 导出查询结果:Select语句 in ...
- mysql 修改字段长度 合并语句_mysql中利用sql语句修改字段名称,字段长度等操作...
1.修改字段的长度 语法: ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型(修改后的长度) 例子: 将字段的长度由10改为20 ALTER TABLE attence M ...
- stream对多个字段分组_Java8 stream 中利用 groupingBy 进行多字段分组
1.利用stream对数据进行分组并求和 public static void main(String[] args) { List items = Arrays.asList("apple ...
最新文章
- 为了给你们讲清楚数据库中间件有哪些,我也是拼了!
- BaaS模式的开发思路
- linux网络设备驱动结构体,Linux网络设备驱动之设备驱动的注册与注销(二)
- L Machining Disc Rotors
- linux下mqm添加用户,Linux 下MQ的安装和配置亲测
- 1200兆路由器网速_如何选购路由器才能发挥宽带的网速?
- 如何使用Java读写系统属性?
- python编程出现:expected an indented block错误。
- 什么是IDE?新手用哪个IDE比较好?
- [转]海南楼市泡沫拯救中国经济~ 恍然大悟呀~
- 安捷伦 34401A串口通信
- c语言怎么加中文注释,谁能对我的C语言程序作出中文注释
- 南京标志设计-logo设计(品牌形象核心部分)
- 【pygame】之小球基础
- Node.js:knex.js数据库MySQL query builder
- SimpleDateFormat的坑
- 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]
- A Game of Thrones(34)
- 交互式多模型算法IMM——机动目标跟踪中的应用
- 如何用css弄个七彩,CSS实现文字七彩呼吸灯动画
热门文章
- java开发_mysql中获取数据库表描述_源码下载
- java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
- 8051单片机的中断发送
- MS SQL入门基础:删除数据库
- python3----练习题(弹幕跟随)
- openjudge7624:山区建小学
- AngularJS-compareDirective.js 验证指令
- bugscan泄露代码解密
- SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-008-带参数的ADVICE
- 大数据_Flink_数据处理_流处理API_Transform(2)_滚动聚合算子_keyBy_sum_min_max_minBy_maxBy---Flink工作笔记0030