有问题的表格和(列)是:
附件(att_name和att_path)
我拨打此电话选择我要更新的信息:
select * from attachment
where att_path like '%//bahamas/attachments/images/logos/%'
我需要使用上面路径中的文件名更新att_name列。例如,如果SQL找到“// bahamas / attachments / images / logos / ABCDE.tif ”,我需要SQL来更新att_name以替换当前的任何内容并插入 ABCDE.tif
我在一个项目上尝试了多个不同的测试,我似乎无法让我的SQL正确实现全局调用,其中此更新在所有行上运行,其中att_path像'%// bahamas / attachments / images / logos /%'
非常感谢任何建议/帮助。
答案 0 :(得分:1)
update attachment set
att_name = Right(att_path, CharIndex('/', Reverse(att_path)) - 1)
where att_path like '%//bahamas/attachments/images/logos/%'
应该做你想做的事。
从末尾开始反转然后搜索第一次出现的/
。
然而,在运行更新之前,我通常会运行一个select来检查在开发如下所示的语句时是否找到了正确的字符位置,因为使用字符串操作很容易得到off-by-one errors:
select att_path, Right(att_path, CharIndex('/', Reverse(att_path)) - 1)
from attachment
where att_path like '%//bahamas/attachments/images/logos/%'