2016-11-21 110 views
0

我想执行SQL更新并删除任何包含“\”的字符。仅在最后一个字符更新后保留字符串

我发现SQL逆向看着代码another question这表明

SELECT RIGHT(@str, CHARINDEX('.', REVERSE(@str)) - 1) 

SELECT RIGHT(@str, CHARINDEX('\', '\' + REVERSE(@str)) - 1) 

是下面做一个SQL表更新的最佳方式修改:

UPDATE [DB].dbo._tbldata 
SET DOCURL = RIGHT(DOCURL, CHARINDEX('\', REVERSE('\' + DOCURL)) - 1) 

并且我应该加

WHERE DOCURL LIKE '%\%' 
+0

多少斜杠可以在你的字符串?你能显示样本数据吗? –

+0

哦,我认为目前他们将是URL的记录是10,但它们是公司的外部URL,我们只需要一个本地文件名。即http:\\ www.bbc.co.uk \文件夹\ folder2 \ folder3 \ folders4 \ filename.pdf将成为filename.pdf – indofraiser

+0

我应该说这只是批量上传,谢天谢地,我们通常会有XML导入并且可以整理在飞行中。 – indofraiser

回答

1

使用CHARINDEXRIGHT

查询

select right(DOCURL, charindex('\', reverse(DOCURL), 1) - 1) 
from [your_table_name] 
where DOCURL like '%\%'; 

如果要更新,然后

查询

update [your_table_name] 
set DOCURL = (
    case when DOCURL like '%\%' then right(DOCURL, charindex('\', reverse(DOCURL), 1) - 1) 
    else DOCURL END 
); 
相关问题