mysql findinset
来源:互联网 发布:中学生的背带裤淘宝网 编辑:程序博客网 时间:2024/06/10 12:24
我们在sql中经常会遇到模糊匹配,但是有的地方却不能简单的用like来区分。比如有个新闻表里面有个type字段,他的存储新闻类型,有 1头条,2推荐....11娱乐,12热点,13图文...等等等等 现在有篇文章他既是 头条,又是热点,还是娱乐, type中以 2,12,11的格式存储. 我们如何用sql查找所有type中有2推荐类别的文章呢。这里我们就可以用到find_in_set函数。精确的匹配到我们想要的记录。
find_in_set(str1,str2) 函数:返回str2中str1所在的位置索引,其中str2必须以","分割开。
工具/原料
- mysql
- find_in_set(str,list)
方法/步骤
使用语法:
select * form table where FIND_IN_SET(str,strlist)。
举个例子,首先建一个简单的新闻表。
录入以下数据。
现在我们想要获取type为2这种类型的新闻。如果用like的话不好实现。因为12,2里都包含了2.
这里我们得用find_in_set来查找:
语句:
select * from t_news where FIND_IN_SET(2,type);
看结果,我们就可以看出很容易就找到了对应的记录。
如果用like的话,会找到错误的记录(我们不想要的记录)。可见这里的find_in_set还是很有用的。
find_in_set(str1,str2)还可以查找到str1所在str2中位置。
同样适用上面的例子数据。
sql语句:
select FIND_IN_SET(2,type) from t_news
还可以适用find_in_set来强制排序。
我们修改一下新闻表数据。
如图:
现在我们有一个需求,需要根据type为2,1,3这种顺序排序。
sql语句:
select * from t_news order by find_in_set(type,'2,1,3');
结果:
- mysql findinset
- Mysql
- MySql
- MYSQL
- MySQL
- mysql
- mysql
- mysql
- mysql
- Mysql
- Mysql
- mysql
- MySQL
- mysql
- Mysql
- mysql
- mysql
- mysql
- ss-libev 源码解析udp篇 (3)
- Redis 集群教程 -redis中文官方网站
- SQL数据库基本操作
- openstack Ocata安装(Object Storage service overview)
- Android之vector的详细用法
- mysql findinset
- rar
- Jmeter借助JVM分析方法,以Redis测试为例
- matplotlib画饼状图
- Java线程间通信
- 深入理解React中的上下文this
- Java判断一个字符串str不为空:方法及时间效率
- spring-framework 项目的jar包下载地址
- mac studio 配置gradle的环境变量