Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите с обновляющим скриптом (DML)  [new]
Proflater
Member

Откуда: Винница
Сообщений: 3
Доброго всем времени суток! Подскажите тёмнуму как правильно написать скриптик, который будет обновлять часть строки.
Автоматизируюю замену IP-адресов в таблице на указанные.
Т.е. заменяю в пути к карте IP с сохранением имени карты.
[IMG]http://i896.photobucket.com/albums/ac168/Proflater/Bikes/111_zpsb2ebc9a4.jpg[/IMG]

Насколько я понял значение разбиваеться на обновляемую и необновляемую часть, но тут что-то намутил(
Значение можно поделить пополам, и обновлять первую часть "HOST#85.97.131.149", дальше без изменений.

Исходное значение: HOST#192.168.1.100#2047#ALIAS#Обзорная карта.sit
требуемое: HOST#85.97.131.149#2047#ALIAS#Обзорная карта.sit

тип столбца - varchar(2000)

На основе более простого скрипта с UPDATE написал такое:
UPDATE t_map_list
SET  topo = CONCAT('HOST#85.97.131.149#2047#ALIAS#', SUBSTRICT(topo,10))
WHERE (SUBSTRICT (topo, 1,9)='HOST#192.168.1.100#2047#ALIAS#%') AND  (topo  IS NOT NULL)
22 апр 13, 10:53    [14211568]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Glory
Member

Откуда:
Сообщений: 104751
Proflater
Значение можно поделить пополам,

Это как - взять длину строки и поделить на 2 ?

Proflater
На основе более простого скрипта с UPDATE написал такое:

В Microsoft SQL Server нет ни CONCAT, ни SUBSTRICT
22 апр 13, 10:57    [14211586]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
Glory
Proflater
Значение можно поделить пополам,

Это как - взять длину строки и поделить на 2 ?

Proflater
На основе более простого скрипта с UPDATE написал такое:

В Microsoft SQL Server нет ни CONCAT, ни SUBSTRICT
CONCAT (Transact-SQL) есть, однако (SQL 2012)
22 апр 13, 11:04    [14211617]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
Но SUBSTRICT нет => выбран не тот форум
22 апр 13, 11:06    [14211629]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
http://msdn.microsoft.com/ru-ru/library/ms186323.aspx

http://msdn.microsoft.com/ru-ru/library/ms188043.aspx
22 апр 13, 11:11    [14211652]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Proflater
На основе более простого скрипта с UPDATE написал такое:
UPDATE t_map_list
SET  topo = CONCAT('HOST#85.97.131.149#2047#ALIAS#', SUBSTRICT(topo,10))
WHERE (SUBSTRICT (topo, 1,9)='HOST#192.168.1.100#2047#ALIAS#%') AND  (topo  IS NOT NULL)

Ок, написали, а дальше что происходит? Этот скрипт не выполняется? Или выполняется, но результат вас не устраивает?
22 апр 13, 11:12    [14211657]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Proflater
Member

Откуда: Винница
Сообщений: 3
автор
В Microsoft SQL Server нет ни CONCAT, ни SUBSTRICT


Спасибо, важное уточнение! В инструкции, где это нагуглил не указали СУБД ((

автор
Ок, написали, а дальше что происходит? Этот скрипт не выполняется? Или выполняется, но результат вас не устраивает?


скрипт не даёт никакого результата, тепер понятно почему.

автор
CONCAT (Transact-SQL) есть, однако (SQL 2012)
БД стоит на MSSQL 2008 r2

автор
http://msdn.microsoft.com/ru-ru/library/ms186323.aspx

http://msdn.microsoft.com/ru-ru/library/ms188043.aspx


спасибо за ссылочки! Сейчас попробую разобраться
22 апр 13, 11:32    [14211762]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
DECLARE 
  @String varchar(100), 
  @String2Replace varchar(100)
SET @String = 'aaa#0123456789#bbb' 
SET @String2Replace  = 'ThereIsNoCowLevel'

SELECT STUFF (@String, CharIndex('#', @String, 0) + 1, CharIndex('#', @String, CharIndex('#', @String, 0) + 1) -  CharIndex('#', @String,0) - 1 , @String2Replace)
22 апр 13, 11:54    [14211882]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Glory
Member

Откуда:
Сообщений: 104751
UPDATE t_map_list
SET  topo = REPLACE(topo, '192.168.1.100', '85.97.131.149')


Сообщение было отредактировано: 22 апр 13, 11:59
22 апр 13, 11:58    [14211913]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Ну это слишком скучно =) А вдруг там будуи другие IP кот. надо менять скопом?
22 апр 13, 12:02    [14211925]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
iap
Member

Откуда: Москва
Сообщений: 47194
Cammomile
Ну это слишком скучно =) А вдруг там будуи другие IP кот. надо менять скопом?
А вдруг HOST# будет в другом месте строки?
Что сделает в этом случае Ваш скрипт?
22 апр 13, 12:08    [14211957]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Показывает концептуальный подход=)
22 апр 13, 12:22    [14212050]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с обновляющим скриптом (DML)  [new]
Proflater
Member

Откуда: Винница
Сообщений: 3
автор
UPDATE t_map_list
SET topo = REPLACE(topo, '192.168.1.100', '85.97.131.149')


Спасибо Glory! То что надо! Заработало сходу

буду юзать и в дальнейшем!
22 апр 13, 19:24    [14214893]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить