一天一个mysql函数(二) FIND_IN_SET()
in和FILD_IN_SET() 的区别:
select id, list, name from table where FIND_IN_SET( 'daodao' , list)
所以如果list是常量(如:('libk', 'zyfon', 'daodao')),则可以直接用IN, 否则要用FIND_IN_SET()函数
FIND_IN_SET(str,strlist)
假如字符串str 在由N 子链组成的字符串列表strlist 中, 则返回值的范围在 1 到 N 之间 。一个字符串列表就是一个由一些被‘,’符
号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计
算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。 这个函数在第一个参数包
含一个逗号(‘,’)时将无法正常运行。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
延伸用法,利用FIND_IN_set排序
首先,in 查询 是查询范围的 比如我有个 article表
查询
select * from article where id in(1,5,3);
这样查询来它默认是 按 id升序排列的。
如果我们想要保持传入的顺序,怎么办呢?
用 find_in_set吧
看:
select * from article where id in(1,5,3) ORDER BY FIND_IN_SET('id','1,5,3');
这样的好处是 我可以把这个排序 存在别的表的某个字段,做关联。
当然也等同于
select * from article where id IN(1,5,3) ORDER BY field(id,'1','5','3');
用上面的 如果排序 和查询 用的是 字符串字段 就方便点。
find_in_set()
问:
mysql中怎么按in语句中的id顺序取数据
select * from ecs_goods where goods_id in (14,1,33,23)
按14,1,33,23这个顺序取
答:
在程序中,$idList='14,1,33,23';
select * from ecs_goods where goods_id in ($idList) order by FIND_IN_SET(goods_id,'$idList')
一天一个mysql函数(二) FIND_IN_SET()的更多相关文章
- 一天一个mysql函数(一) cast && convert
MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值.两者具体的语法如下: CAST(value as type); CONVERT(value, type) ...
- mysql函数二
四.条件推断函数 1.if(expr,v1,v2)函数:成立返回结果v1,否则结果v2 例:select id,if(grade>=60,'pass','fail') from t; 2.IFN ...
- 【mysql函数】FIND_IN_SET函数用法
当你的数据存储为一下格式时,想查出带有某个id的所有数据时,FIND_IN_SET这个函数可以帮到你. ',C_BranchId)
- mysql 函数(二)
1.space(N) 输出空格 SELECT SPACE(5); -> ' ' 2.replace(str,from_str,to_str) 讲str中的from_str 替换成to_s ...
- 常用PHP MySQL函数
配置选项 MySQL 函数的行为受到 php.ini 中设置的影响. mysql.allow_persistent "1" 是否允许 MySQL 的持久连接. mysql.max_ ...
- Mysql函数FIND_IN_SET()的使用方法
有了FIND_IN_SET这个函数.我们可以设计一个如:一只手机即是智能机,又是Andriod系统的. 比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1.智能机,2.Andri ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- MySQL函数find_in_set介绍
MySQL函数find_in_set介绍 数据库中的某个字段我十以字符存储的,同时又以","隔开的.如果想要查询这个字段中包含某个字符串该怎么查询?使用like?感觉不妥,如果使用 ...
- Mysql中使用find_in_set函数查找字符串
mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不 ...
随机推荐
- PHP 实现下载文件的方法
方法一: header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); ...
- 【STL】帮你复习STL泛型算法 一
STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <it ...
- 结合Vim ghostscript 将源代码文件转换成语法高亮的pdf格式文档
step 1: 安装ghostscript (debian 环境, 其他环境自行google) sudo apt-get install ghostscript step 2: 用Vim生成ps文件 ...
- [LeetCod] Single Number
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- SVM核函数与软间隔
核函数 在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分.在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射( ...
- 一站式Hadoop&Spark云计算分布式大数据和Android&HTML5移动互联网解决方案课程(Hadoop、Spark、Android、HTML5)V2的第一门课程
Hadoop是云计算的事实标准软件框架,是云计算理念.机制和商业化的具体实现,是整个云计算技术学习中公认的核心和最具有价值内容. 如何从企业级开发实战的角度开始,在实际企业级动手操作中深入浅出并循序渐 ...
- memcache和memcahced区别
在写这篇文章之前一直对memcache .memcahced模糊,相差一个字母,特此总结下: Memcache是什么? Memcache是一个自由和开放源代码.高性能.分配的内存对象缓存系统.用于加速 ...
- WinJS.Binding.List与kendo.data.ObservableArray
avalon0.8一个最大目标是实现对数组的深层监控,可是面临的困难重重,至今还没有什么起色.于是看一下其他两个MVVM框架的做法(knockout, emberjs, angular都不能监听家庭数 ...
- Hibernate3注解
1.@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2.@Table(name="",catalog=&quo ...
- InnoDB与MyISAM的区别
MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处 ...