Mydsql中字符截取SubString、SubString_index函数

SubString用于:

返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。

格式:SubString(string, intint


查询一个字段结果是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,oatindex

示例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





你可能感兴趣的:(Oracle,&,Mysql)