| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Изменение значений в полях |
| Автор: andrey_pro 17.3.2010, 18:59 |
| Есть таблица T, в ней колонка column все записи в колонке такого вида: 'D:\name\title.txt' 'D:\name\body.txt' и т.д мне нужно изменить все на такой вид: 'title.txt' 'body.txt' т.е. убрать 'D:\name\' как это можно сделать? |
| Автор: Gluttton 17.3.2010, 19:35 | ||
| Вариантов много... Например, мжноо это сделать на стороне клиента. Если мне не изменяет память тот же C++ Builder имеет функцию, которая позволяет из полного пути извлекать имя файла. Думаю, что другие инструменты тоже снабжены чем то подобным. Ну а если реализовать это средствами DML, то это может выглядеть как-нибудь так: MS SQL Server 2005
Т.е. выбираем перевернутую задом-на-перед (reverse) подстроку (substring) из перевернутого задом-на-перед (reverse) значения с позиции 1 и до той позиции (charindex), которая у символа '/' в перевернутом задом-на-перед (reverse) значении. |
| Автор: skyboy 17.3.2010, 23:00 |
| если буквально "убрать d:\name" то можно сделать нечто вроде replace(column, "d:\name", "") |
| Автор: Akina 17.3.2010, 23:06 |
| Если ВЕЗДЕ именно 'D:\name\' и никак иначе - то взять substr с 9-ого символа до конца строки. |
| Автор: andrey_pro 17.3.2010, 23:50 |
| вот составил запрос на обновление: UPDATE T Set col = (SELECT RIGHT(col, LEN(col) - InStr(col, '\')) FROM T) Пишет такое: В операции должен использоваться обновляемый запрос. не понятно как решать. |
| Автор: Gluttton 18.3.2010, 00:18 | ||||
лишнее... Как то так нужно:
|