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'
posted @   ATester  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示