Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение значений в полях 
:(
    Опции темы
andrey_pro
Дата 17.3.2010, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Есть таблица T, в ней колонка column
все записи в колонке такого вида: 
'D:\name\title.txt'
'D:\name\body.txt'
и т.д

мне нужно изменить все на такой вид:
'title.txt'
'body.txt'

т.е. убрать 'D:\name\'

как это можно сделать?

PM MAIL   Вверх
Gluttton
Дата 17.3.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Вариантов много...

Например, мжноо это сделать на стороне клиента. Если мне не изменяет память тот же C++ Builder имеет функцию, которая позволяет из полного пути извлекать имя файла. Думаю, что другие инструменты тоже снабжены чем то подобным.

Ну а если реализовать это средствами DML, то это может выглядеть как-нибудь так:
MS SQL Server 2005
Код

select
    reverse
    (
        substring
        (
            reverse
            (
                column
            ),
            1,
            charindex
            (
                '/', 
                reverse
                (
                    column
                )
            )
        )
    )   as s
from t

Т.е. выбираем перевернутую задом-на-перед (reverse) подстроку (substring) из перевернутого задом-на-перед (reverse) значения с позиции 1 и до той позиции (charindex), которая у символа '/' в перевернутом задом-на-перед (reverse) значении.

Это сообщение отредактировал(а) Gluttton - 17.3.2010, 19:41


--------------------
Слава Україні!
PM MAIL   Вверх
skyboy
Дата 17.3.2010, 23:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



если буквально "убрать d:\name" то можно сделать нечто вроде replace(column, "d:\name", "")
PM MAIL   Вверх
Akina
Дата 17.3.2010, 23:06 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Если ВЕЗДЕ именно 'D:\name\' и никак иначе - то взять substr с 9-ого символа до конца строки.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
andrey_pro
Дата 17.3.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



вот составил запрос на обновление:
UPDATE T Set col = (SELECT RIGHT(col, LEN(col) - InStr(col, '\')) FROM T)


Пишет такое:
  В операции должен использоваться обновляемый запрос.

не понятно как решать.

PM MAIL   Вверх
Gluttton
Дата 18.3.2010, 00:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Код

select from T

лишнее...

Как то так нужно:
Код

UPDATE T Set col = RIGHT(col, LEN(col) - InStr(col, '\'))



--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.