分享:利用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) ;