mysql 下locate和find_in_set的使用

来源:互联网 发布:windows android忘仙 编辑:程序博客网 时间:2024/05/18 00:05

公司在做的是OA系统,由于有很多模块都用到了多个ID。比如一个经理下面有多个销售员,那么在表里多个销售员存放的时候是将他们的ID用‘,’连接起来存放的ID串,以前没注意过这个问题,偶然间发现mysql的locate功能。这样查找还是很方便的,具体使用附上一行代码。

select * from 表名 where locate(UID,SALE_ID)>0 order by CREATE_TIME desc  limit 10

具体意思就是判断当前的UID是否存在于SALE_ID里面,如果存在,locate执行后是大于0的,就按照时间顺序选出前十条数据。

LOCATE(substr,str)

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

但是话说回来,locate也有一个缺陷,比如一个串str=123,456,789,我们需要查找的是substr=12,那么当我们使用locate(substr,str)>0的时候,他是true。这种情况下我们就可以考虑使用find_in_set这个函数,道理同locate一样,但是find_in_set(substr,str)就是一个false了。

0 0
原创粉丝点击