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函数相似,只不过是从字符串左侧截取。
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'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了