常用的mysql截取函数有:left(), right(), substring(), substring_index()

下面来一一说明一下:

1.左截取left(str, length)

说明:left(被截取字段,截取长度)

即从str字符串最左边开始截取 length 个长度字符。

mysql截取函数left()

2.右截取right(str, length)

说明:right(被截取字段,截取长度) 

即从str字符串最右边开始截取 length 个长度字符。

mysql截取函数right()

3.substring(str, pos); substring(str, pos, len)

说明:substring(被截取字段,从第几位开始截取) 
   substring(被截取字段,从第几位开始截取,截取长度) 

没有len参数的即字符串从pos位数开始(字符串pos位数是指整个字符串是由几个字符组成,即由多少位字母组成。也即pos是从1开始不是0,这和java的截取函数substring()中的从下标(从0开始) 截取规则不一样。而且是包含此位数对应字符开始截取。如果pos为负数,表示是从最右边向左开始数pos个位数的字符,然后向后截取),一直截取到最后;有len参数的就是从pos位数开始,向后截取len长度(从pos位置作为第一个开始数)。

mysql截取函数substring()

4.substring_index(str,delim,count)

说明:substring_index(被截取字段,关键字,关键字出现的次数),如果“关键字出现的次数”是正的如a,表明是字符串从最左边开始截取,直到第a个“关键字”处。如果“关键字出现的次数”是负数的如 负a,表明是字符串从最右边开始截取,直到从右向左开始数,第a个“关键字”处。

mysql截取函数substring_index()

下边是java 字符串截取 规则对比:

Java中的substring()方法有两个方法的重载,一个带一个参数的,一个带两个参数的。 

第一种写法: substring(n);//从索引是n的字符开始截取,条件(n>=0,n<字符串长度),第一个字符的索引是0 。
                n作为第一个参数,必须小于字符串长度,因为这边是从包含n下边开始截取的,所以n肯定不能等于字符串整个位数长度,而下边的m作为第二个参数才可以等于。
第二种写法: substring(n,m);//从n开始,截取m-n个字符,条件(n<m,m<=字符串长度)

通俗点:

  str.substring(int begin,int end); 从字符串开始位置(开始位置即为下标,下标是从0开始)截取到结束位置,前包含,后不包含!

  String sql = “abcdefg”;

  String a = sql.substring(0,4);

  System.out.println(a);

结果:abcd

下标从0开始