1、find_in_set函数
今天在论坛中看到一个关于mysql的问题,问题如下
good_id cat_id
12654 665,569
12655 601,4722
goods_id是商品id
cat_id是分类id
当我,怎么根据这种分类ID查数据(一个商品有多个分类,而且用逗号隔开了)
我现在用的是like 这样的话,输入一个分类id是688,或者4722都能出来这个商品,但输入一个722也出来这个商品了。
如果用like做的话,肯定会有问题的,我的开始的想法是,把cat_id里面的字符串换成数组,这样可以利用mysql里面的in操作,这样就不会出现查找722,而4722类别下的产品都跑出来了。我从网上找了半天,这方面的字符串操作函数,没找到,不过我发现了find_in_set这个函数虽然不能,将字符串转换成数组,但是也不会出现上面的情况。
此函数对字段的值的存储有格式要求,即多个值用英文逗号分隔开。
2、substring_index(str, delim, count)
str:要处理的字符串
delim:分隔符
count:计数
例子:str=www.google.com
substring_index(str,'.',1)
结果是:www
substring_index(str,'.',2)
结果是:www.google
也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容
相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:
substring_index(str,'.',-2)
结果为:google.com
有人会为,如果我呀中间的的google怎么办?
很简单的,两个方向:
1、从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边:
substring_index(substring_index(str,'.',-2),‘.’,1);
3、date_format(c.updateDate, '%y/%m/%d')
date_diff() 比较日期的函数
to_days() 计算某天距离某天的天数
yearweek() 同一周