Msql 函数find_in_set()用法
来源:互联网 发布:linux php 权限 编辑:程序博客网 时间:2024/05/19 19:42
原文地址:http://www.cnblogs.com/gpfeisoft/p/5535450.html
有了FIND_IN_SET这个函数。我们可以设计一个如:一只手机即是智能机,又是Andriod系统的。
比如:有个产品表里有一个type字段,他存储的是产品(手机)类型,有 1、智能机,2、Andriod系统,3、小米系统,4、1000元以下
现在有条手机的记录即是1000元以下的,又是智能机,还是Andriod的系统。
type中以 4,1,2的格式存储.
那们我们如何用sql查找所有type中有4的1000元以下的手机呢,
这就要我们的find_in_set出马的时候到了.
先看MySQL手册中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’);
+—————————-+
| FIND_IN_SET(‘b’,’a,b,c,d’) |
+—————————-+
| 2 |
+—————————-+
1 row in set (0.00 sec)
用起来很简单
就以上面我说到的情况来举例:
以下为实际应用当中的SQL语句:
select * from mobile where FIND_IN_SET(‘4’,type);
这个就可以找出所有1000元以下手机的记录!
查询表字段 pingid = (1,2,3,)
SELECT * FROM linkinfo
WHERE pingid
REGEXP ‘{id},’ AND pingid
NOT REGEXP ‘[[:alnum:]]+{id},’ 使用上面的语句,可以查询出来
用FIND_IN_SET() 更简单
SELECT * FROM linkinfo WHERE FIND_IN_SET( ‘1’, pingid )
原来以为mysql可以进行这样的查询
select id, list, name from table where ‘daodao’ IN (list); (一)
注:1. table含有三个字段id:int, list:varchar(255), name:varchar(255)
实际上这样是不行的,这样只有当name是list中的第一个元素时,查询才有效,否则都的不到结果,即使’daodao’真的再list中
再来看看这个:
select id, list, name from table where ‘daodao’ IN (‘libk’, ‘zyfon’, ‘daodao’); (二)
这样是可以的
这两条到底有什么区别呢?为什么第一条不能取得正确的结果,而第二条却能取得结果。
原因其实是(一)中 (list) list是变量, 而(二)中 (‘libk’, ‘zyfon’, ‘daodao’)是常量
所以如果要让(一)能正确工作,需要用find_in_set():
select id, list, name from table where FIND_IN_SET( ‘daodao’ , list); (一)的改进版。
总结:所以如果list是常量,则可以直接用IN, 否则要用FIND_IN_SET()函数
- Msql 函数find_in_set()用法
- mysql中查找字符串函数FIND_IN_SET用法
- Mysql字符串函数FIND_IN_SET()的两点用法
- mysql find_in_set用法 以及group_concat()函数
- mysql 中的find_in_set用法
- mysql 的FIND_IN_SET()用法
- mysql FIND_IN_SET() 用法
- mysql FIND_IN_SET的用法
- mysql FIND_IN_SET 用法
- mysql find_in_set 用法
- mysql 中FIND_IN_SET用法
- find_in_set thinkphp用法
- TP5 find_in_set用法
- msql quote()函数
- Hive实战 函数Find_in_set
- Mysql FIND_IN_SET函数
- mysql函数group_concat,find_in_set
- FIND_IN_SET(str,strlist)函数
- [Windows]查看运行进程的参数【wmic】
- 《第一行代码》学习之旅--第8-10章
- wingIDE 6 crack
- Copy List with Random Pointer
- win7开机后出现将其更名为“将其更名为'c:\program1‘”的文件名警告
- Msql 函数find_in_set()用法
- 使用OkHttp的Interceptor模拟返回数据
- 把文件添加到版本库中
- 复位电路
- PAT A1117. Eddington Numbe(水题,但一开始题目意思竟然理解错了==)
- C++模板类
- B树、B-树、B+树、B*树【转】,mysql索引
- 关于移动端rem 布局的一些总结
- 移动端 rem 布局的一些总结