SubString用于:
返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。
格式:SubString(string, int, int)
查询一个字段结果是date类型:2017-08-25 00:00:00
示例1:查询Sql返回时间,返回的时间是带有时分秒后缀的,现在只需要前面的年月日,那么
SELECT SUBSTRING(CONCAT(effectEndDate,' '),1,10) AS endDate
1. concat(‘xxx’,‘ ’)先将date类型转为string
2. 然后SubString函数将对转换后的string进行SubString(‘str’,1,10)
意思为:将str字符串取从第1个字符开始到第10个字符,所以正好取出后是2017-08-25
示例2:取指定字符开始到结尾,例如现在只要取时分秒
则写法:SubString(‘str’,12)
意思为:取str字符串从第12个字符开始到结尾,所以取到的结果就是 00:00:00了
SubString_index()函数
返回第一个参数中从索引参数指定的位置开始、索引参数指定的长度的子字符串。
格式:SubString_index(string,oat, index)
示例1:返回指定分组字符串,指定索引前的部分
现在有查询一串id,传给另外一个SQL的in(id1, id2, id3,id4, ... id10)
我需要查询id后将id分组显示,并用“,”分隔,且只返回倒序前10条(取第10个逗号前的字符串值)
GROUP_CONCAT(id ORDER BY id DESC) 处理结果如下:
3486,3485,3484,3483,3482,3481,3480,3479,3478,3477,xxxx,xxxx,xxxx,xxxx
再用SubString_index处理,index可以为负值
SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY id DESC),',',10) FROM product;
处理后返回的id字符串为3486,3485,3484,3483,3482,3481,3480,3479,3478,3477