分享:利用right()、substring()函数:查询字符串最后两个字母
eg.获取Employees中的first_name,查询按照first_name最后两个字母并按其升序进行排列


思路:主要是如何获取first_name字符串的最后两个字母,这是会想到substring(string,position)/substring(string,position,length)right(string,position)函数
方法一:利用substring(string,position)/substring(string,position,length)


select first_name
from (
select first_name,
       substring(first_name,-2,1) as last2,
       substring(first_name,-1) as last1
from employees) as a 
order by last2,last1;

简化版:


select first_name
from employees 
order by substring(first_name,-2);

方法二:利用right(string,position)

select first_name
from employees 
order by right(first_name,2);

注释:函数解析
substring()是专门用来对字符串进行切分的函数,主要有两种形式:
 SUBSTRING(string,position);
 SUBSTRING(string,position,length);

1.1 SUBSTRING(string,position)
string:参数是要操作的字符串。
position: 参数是一个"整数",用于指定子串的起始字符(从第几位开始截取),position可以是正整数或负整数。当 pos 为正数时,表示从字符串第 pos 位开始取,直到右边结束;当pos为负数时,表示从字符串倒数第 pos位开始取,直到右边结束。
mysql> SELECT substring('www.csdn.net',5);
输出: csdn.net
mysql> SELECT substring('www.csdn.net',-5);
输出: n.net
1.2 SUBSTRING(string,position,length)
除了string和position参数之外,SUBSTRING函数还有一个length参数。length是一个正整数,用于指定子字符串的字符数。如果length<=0,那么会返回空字符串。
例如,获取www.csdn.net中的csdn,SQL如下:
mysql> SELECT substring('www.csdn.net',5,4);
输出: csdn
或者通过配置position,从后往前数;SQL如下
mysql> SELECT substring('www.csdn.net',-8,4);
输出: csdn
1.3 RIGHT (string,length)
RIGHT (string,length) ,从字符串string右边第一位开始,截取长度为length个字符,仍然是正向顺序截取。length应大于0,如<=0,返回空字符串。示例如下
mysql> SELECT RIGHT ('www.csdn.net',5) ;