2016-11-21 2 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

О, я думаю, что 10 - это запись на момент, когда они будут URL-адресами, но это внешний URL-адрес компаний, и нам нужно только локальное имя файла. т.е. http: \\ www.bbc.co.uk \ folder \ folder2 \ folder3 \ folders4 \ filename.pdf станет filename.pdf – indofraiser

+0

Я должен сказать, что это только для массовой загрузки, к счастью, у нас обычно будет импорт XML и может быть в порядке на лету. – indofraiser

ответ

1

Использование CHARINDEX и RIGHT.

Запрос

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 
); 
Смежные вопросы