从SQL表路径字段提取第4个\后.前字符串并插入同表列
提取固定结构路径中的文件名并更新列
针对你的需求,因为路径结构固定,我们可以通过嵌套CHARINDEX精准定位第4个反斜杠的位置,再结合点号的位置截取目标字符串,最后更新到column3列。
1. 先验证截取结果(可选)
执行以下查询,确认提取的文件名是否符合预期:
SELECT destination, SUBSTRING( destination, -- 定位第4个反斜杠的位置,+1是从反斜杠后一位开始截取 CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination) + 1 ) + 1 ) + 1 ) + 1, -- 计算截取长度:点号位置 - 第4个反斜杠位置 -1 CHARINDEX('.', destination) - CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination) + 1 ) + 1 ) + 1 ) - 1 ) AS target_filename FROM documentfiles
2. 执行更新操作
确认结果正确后,执行更新语句将提取的文件名写入column3:
UPDATE documentfiles SET column3 = SUBSTRING( destination, CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination) + 1 ) + 1 ) + 1 ) + 1, CHARINDEX('.', destination) - CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination, CHARINDEX('\', destination) + 1 ) + 1 ) + 1 ) - 1 )
说明
嵌套CHARINDEX的逻辑是逐层定位下一个反斜杠:
- 第一次
CHARINDEX('\', destination)找到第一个反斜杠 - 后续每次都在上一个反斜杠的位置+1处开始查找下一个,直到找到第4个
- 截取起始位置为第4个反斜杠的位置+1,结束位置为点号的位置,计算长度后即可得到目标文件名
内容的提问来源于stack exchange,提问作者whitchurch11
相关产品推荐
相关产品推荐

