如何结合INSTR与SUBSTR获取最右侧空格后的最后子串?
解决方案
你不用纠结提取长度的问题——绝大多数SQL方言里的SUBSTR(或SUBSTRING)函数,如果省略第三个长度参数,会自动提取从指定起始位置到字符串末尾的所有字符。
结合你已经用INSTR(Column B, ' ', -2)定位到最后一个空格的位置,只需要把提取的起始位置设为「空格位置+1」,直接调用SUBSTR即可:
SELECT Column A, SUBSTR(Column B, INSTR(Column B, ' ', -2) + 1) AS Target_Result FROM your_table;
用你的数据集测试:
- 第一行
Column B为Apple Banana,INSTR返回最后一个空格的位置是6,6+1=7,SUBSTR(Column B,7)直接得到Banana; - 第二行
Column B为Corn Chips,INSTR返回5,5+1=6,SUBSTR(Column B,6)得到Chips,完全匹配需求。
补充不同数据库的适配
如果你的数据库使用SUBSTRING(比如SQL Server),逻辑同理,省略长度参数即可;也可以用反向字符串的思路实现,以下是兼容写法:
SELECT Column A, SUBSTRING(Column B, CHARINDEX(' ', Column B, LEN(Column B) - CHARINDEX(' ', REVERSE(Column B))) + 1, LEN(Column B)) AS Target_Result FROM your_table;
内容的提问来源于stack exchange,提问作者Jasveen Mihaljevic
相关产品推荐
相关产品推荐

