如何在SQL中提取文件路径最后一个\之后的字符串?
SQL提取路径最后一个反斜杠后的内容
给定路径:C:\ABC\BHDKJF\20240102\Files_20240102_newfile,要提取最后一个\之后的部分Files_20240102_newfile,不同SQL数据库的实现方法如下:
SQL Server
使用REVERSE+CHARINDEX+RIGHT组合实现:
SELECT RIGHT( 'C:\ABC\BHDKJF\20240102\Files_20240102_newfile', CHARINDEX('\', REVERSE('C:\ABC\BHDKJF\20240102\Files_20240102_newfile')) - 1 ) AS filename;
原理:先反转字符串找到第一个\的位置,再通过RIGHT截取对应长度的字符。
MySQL
直接用SUBSTRING_INDEX函数指定分隔符和倒数第1个部分:
SELECT SUBSTRING_INDEX('C:\\ABC\\BHDKJF\\20240102\\Files_20240102_newfile', '\\', -1) AS filename;
注意:MySQL中反斜杠需要转义,因此用\\表示单个\。
Oracle
提供两种实现方式:
方法1:正则表达式匹配
SELECT REGEXP_SUBSTR('C:\ABC\BHDKJF\20240102\Files_20240102_newfile', '[^\\]+$') AS filename FROM DUAL;
方法2:INSTR+SUBSTR组合
SELECT SUBSTR( 'C:\ABC\BHDKJF\20240102\Files_20240102_newfile', INSTR('C:\ABC\BHDKJF\20240102\Files_20240102_newfile', '\', -1) + 1 ) AS filename FROM DUAL;
原理:INSTR(..., '\', -1)定位最后一个\的位置,再用SUBSTR从该位置的下一位开始截取到末尾。
通用适配思路
如果数据库支持字符串反转和索引查找,都可以采用类似逻辑:
- 反转目标字符串
- 找到第一个分隔符
\的位置 - 从原字符串右侧截取对应长度的内容
内容的提问来源于stack exchange,提问作者user11740857
相关产品推荐
相关产品推荐

