SQL52 获取employees中的first_name


本题链接
表结构如下所示(内容不完整):

额外的要求是按照first_name最后两个字母升序进行输出。这里需要用到MySQL的字符串处理函数RIGHT。
RIGHT函数的语法如下所示:

RIGHT(str,len)

其中str指定被处理的字符串,len表示从右起截取的长度。

至此,给出本题的解

SELECT first_name FROM employees
ORDER BY RIGHT(first_name, 2)

扩展-字符串处理函数

LEFT()

LEFT(str,len)

和RIGHT函数相似,只不过是从字符串左侧截取。

SUBSTRING()

子串截取,有两个别名:MID()和SUBSTR()。

SUBSTRING(str,pos)
SUBSTRING(str FROM pos) # 上句的规范形式

SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len) # 上句的规范形式

其中str指定被处理的字符串,pos表示开始截取的位置。
pos为正数时,表示自左至右第几个字符;为负数时,其绝对值表示从右至左第几个字符。
指定len参数时,表示截取至多len长度的子串;否则截取到字符串末尾。举例如下:

mysql> SELECT SUBSTRING('Quadratically',5);  # 不指定len,截取到末尾
        -> 'ratically'
mysql> SELECT SUBSTRING('Quadratically',5,6); # len=6,截取6个字符
        -> 'ratica'
mysql> SELECT SUBSTRING('Sakila', -3);  # pos=-3,从右数第3个字符起截取到末尾
        -> 'ila'
mysql> SELECT SUBSTRING('Sakila', -5, 3);  # 从右数第5个字符起截取3个字符
        -> 'aki'

SUBSTRING_INDEX()

SUBSTRING_INDEX(str,delim,count)

按照指定的分隔符,截取子串。
delim指定分隔符,count为正时从左至右搜寻,为负时从右至左搜寻,找到count指定数量的分隔符后输出途径的所有字符(不包含该分隔符)。举例:

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);  # 返回从左至右第二个句号之前的所有字符
        -> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);  # 返回从右至左第二个句号之后的所有字符
        -> 'mysql.com'

相关