如何在T-SQL中提取两个相同分隔符之间的字符串?
基于SUBSTRING与CHARINDEX提取路径指定片段实现方案
核心逻辑
你需要提取的内容位于路径第一个反斜杠\与第二个反斜杠\之间,只需通过两次反斜杠位置定位,即可计算出截取的起始位置和长度:
- 第一个反斜杠的位置+1就是截取的起始下标
- 第二个反斜杠位置减去第一个反斜杠位置再减1,就是需要截取的字符长度
基础实现代码(适用于SQL Server)
SELECT FilePath, SUBSTRING( FilePath, -- 第一个反斜杠位置+1,作为截取起始位 CHARINDEX('\', FilePath) + 1, -- 截取长度=第二个反斜杠位置 - 第一个反斜杠位置 -1 CHARINDEX('\', FilePath, CHARINDEX('\', FilePath) + 1) - CHARINDEX('\', FilePath) - 1 ) AS FirstLevelDir FROM 你的表名
异常兼容版本
如果存在部分路径层级不足2个反斜杠的情况,可增加判断逻辑避免报错:
SELECT FilePath, CASE -- 先判断路径中反斜杠总数是否≥2 WHEN LEN(FilePath) - LEN(REPLACE(FilePath, '\', '')) >= 2 THEN SUBSTRING( FilePath, CHARINDEX('\', FilePath) + 1, CHARINDEX('\', FilePath, CHARINDEX('\', FilePath) + 1) - CHARINDEX('\', FilePath) - 1 ) ELSE NULL -- 可自行修改为符合需求的缺省值 END AS FirstLevelDir FROM 你的表名
内容的提问来源于stack exchange,提问作者Adam Craven
相关产品推荐
相关产品推荐

