powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Множественная замена текста в таблице
17 сообщений из 17, страница 1 из 1
Множественная замена текста в таблице
    #39591767
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здравствуйте, у меня есть таблица и в строке Lokation мне надо заменить текст вот то что я использую сейчас
update [dbo].[Attachments_kadru] set [Location] = replace ([Location] , '\31Декабрь2016' ,'\2016.12.31\31Декабрь2016') where [Location] like '%\31Декабрь2016%'
GO

но мне нужна замена сразу всех записей а их 100к, возможно ли сделать замену хотя бы сразу за один год, месяца всегда пишутся как
Декабрь, Январь и т.д
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39591786
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, для начала переименуйте таблицу в Location, это уже будет половина успеха.
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39591789
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*столбец
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39591806
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura sakun, я наугад пишу, т.к. таблицы у меня такой нет, поэтому исправлением опечаток и отладкой сами занимайтесь, я общую идею даю.
Calendar - заранее подготовленная таблица с датами.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set language russian

    update att 
    set     [Location] = replace ([Location] , '\' + datename(day, c.date) + datename(month, c.date) + datename(year, c.date) 
                                           ,'\' + format(c.date, 'yyyy.MM.dd', 'en-US') + 
                                            '\' + datename(day, c.date) + datename(month, c.date) + datename(year, c.date))
    from    [dbo].[Attachments_kadru] att
            inner join Calendar c on att.[Location] like '%' + datename(day, c.date) + datename(month, c.date) + datename(year, c.date) + '%'
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592216
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот если нет таблицы с датой
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592229
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но есть столбец который называется UID и там записано вот примерно такое 02Декабрь2016
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592231
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yura sakun,

Вот что там точно записанно 01Декабрь2016.222506
Это типа id после точки
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592233
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto, а как сделать не с таблицей Calendar, а с столбцом тоже самое
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592315
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura sakun,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set language russian
declare @c date = '20161230'
    update att 
    set @c = DATEADD(day, 1, @c), [Location] = replace ([Location] , '\' + datename(day, @c) + datename(month, @c) + datename(year, @c) 
                                           ,'\' + format(@c, 'yyyy.MM.dd', 'en-US') + 
                                            '\' + datename(day, @c) + datename(month, @c) + datename(year, @c))
    from    [dbo].[Attachments_kadru] att
    where att.[Location] like '%' + datename(day, @c) + datename(month, @c) + datename(year, @c) + '%'
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592538
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Massa52, вы неправильно поняли как раз поиск мне, надо осуществлять как 01Декабрь2016, а не 2016.12.01, из другого столбца 01Декабрь2016 и типа как это правильно записать,потому что этих дне и этих годов много
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592547
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @t table (s varchar(50));
insert into @t
values
 ('\01Декабрь2016.222506'),
 ('\01Январь2017.222507'),
 ('\01Март2017.222508'),
 ('\01Октябрь2017.222509');

select * from @t;

update t
 set
  s = '\' + b.y + '.' + m.n + '.' + b.d + t.s
from
 @t t cross apply
 (select parsename(t.s, 2)) a(s) cross apply
 (select substring(a.s, 2, 2), stuff(stuff(a.s, len(a.s) - 3, 4, ''), 1, 3, ''), right(a.s, 4)) b(d, m, y) left join
 (
  values
   ('01', 'Январь'), ('02', 'Февраль'), ('03', 'Март'), ('04', 'Апрель'), ('05', 'Май'), ('06', 'Июнь'),
   ('07', 'Июль'), ('08', 'Август'), ('09', 'Сентябрь'), ('10', 'Октябрь'), ('11', 'Ноябрь'), ('12', 'Декабрь')
 ) m(n, mn) on m.mn = b.m;

select * from @t;
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592619
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura sakunА вот если нет таблицы с датойТогда сделайте ее! Можете поискать на этом форуме - скорее всего уже не один раз давали скрипт создания такой таблицы. Даже если нет - создать ее - не великая проблема, рекурсивный CTE вам в помощь.
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592686
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
declare @t table (s varchar(50));
insert into @t
values
 ('\01Декабрь2016.222506'),
 ('\01Январь2017.222507'),
 ('\01Март2017.222508'),
 ('\01Октябрь2017.222509');

select * from @t;

update t
 set
  s = '\' + b.y + '.' + m.n + '.' + b.d + t.s
from
 @t t cross apply
 (select parsename(t.s, 2)) a(s) cross apply
 (select substring(a.s, 2, 2), stuff(stuff(a.s, len(a.s) - 3, 4, ''), 1, 3, ''), right(a.s, 4)) b(d, m, y) left join
 (
  values
   ('01', 'Январь'), ('02', 'Февраль'), ('03', 'Март'), ('04', 'Апрель'), ('05', 'Май'), ('06', 'Июнь'),
   ('07', 'Июль'), ('08', 'Август'), ('09', 'Сентябрь'), ('10', 'Октябрь'), ('11', 'Ноябрь'), ('12', 'Декабрь')
 ) m(n, mn) on m.mn = b.m;

select * from @t;


как это сделать с конкретной таблицой?
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39592907
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamotoyura sakunА вот если нет таблицы с датойТогда сделайте ее! Можете поискать на этом форуме - скорее всего уже не один раз давали скрипт создания такой таблицы. Даже если нет - создать ее - не великая проблема, рекурсивный CTE вам в помощь.

я сделал как вы говорили но у меня ничего не изменяется в таблицы, я проверочную создал и там ничего не меняет
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39593538
yura sakun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39594368
VovkaJyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/*
declare @t table (s varchar(50));
insert into @t
values
('\01Декабрь2016.222506'),
('\01Январь2017.222507'),
('\01Март2017.222508'),
('\01Октябрь2017.222509');
select * from @t;
*/

update t
set
s = '\' + b.y + '.' + m.n + '.' + b.d + t.s
from
[dbo].[Attachments_kadru] t cross apply
(select parsename(t.s, 2)) a(s) cross apply
(select substring(a.s, 2, 2), stuff(stuff(a.s, len(a.s) - 3, 4, ''), 1, 3, ''), right(a.s, 4)) b(d, m, y) left join
(
values
('01', 'Январь'), ('02', 'Февраль'), ('03', 'Март'), ('04', 'Апрель'), ('05', 'Май'), ('06', 'Июнь'),
('07', 'Июль'), ('08', 'Август'), ('09', 'Сентябрь'), ('10', 'Октябрь'), ('11', 'Ноябрь'), ('12', 'Декабрь')
) m(n, mn) on m.mn = b.m;

select * from [dbo].[Attachments_kadru];


просто напросто заменяете таблицу @t на вашу ([dbo].[Attachments_kadru]).
...
Рейтинг: 0 / 0
Множественная замена текста в таблице
    #39594369
VovkaJyk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виноват... название колонки с s на вашу также заменяете([Location])


/*
declare @t table (s varchar(50));
insert into @t
values
('\01Декабрь2016.222506'),
('\01Январь2017.222507'),
('\01Март2017.222508'),
('\01Октябрь2017.222509');
select * from @t;
*/

update t
set
[Location] = '\' + b.y + '.' + m.n + '.' + b.d + t.s
from
[dbo].[Attachments_kadru] t cross apply
(select parsename(t.s, 2)) a(s) cross apply
(select substring(a.s, 2, 2), stuff(stuff(a.s, len(a.s) - 3, 4, ''), 1, 3, ''), right(a.s, 4)) b(d, m, y) left join
(
values
('01', 'Январь'), ('02', 'Февраль'), ('03', 'Март'), ('04', 'Апрель'), ('05', 'Май'), ('06', 'Июнь'),
('07', 'Июль'), ('08', 'Август'), ('09', 'Сентябрь'), ('10', 'Октябрь'), ('11', 'Ноябрь'), ('12', 'Декабрь')
) m(n, mn) on m.mn = b.m;

select top 100 * from [dbo].[Attachments_kadru];
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Множественная замена текста в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]