Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как изменить первые две бувы в поле String?  [new]
Станислав34
Member

Откуда:
Сообщений: 3
Добрый вечер коллеги,

сегодня меня начальник загрузил такой задачей,
таблица с физическими именами, фамилиями и адресами около 12000 строк, задача
как изменить в фамилиях и именах первые две или три буквы?

Спасибо за помощь!
20 мар 17, 21:16    [20315627]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
iap
Member

Откуда: Москва
Сообщений: 43163
Станислав34
Добрый вечер коллеги,

сегодня меня начальник загрузил такой задачей,
таблица с физическими именами, фамилиями и адресами около 12000 строк, задача
как изменить в фамилиях и именах первые две или три буквы?

Спасибо за помощь!
Шикарная постановка задачи!
20 мар 17, 21:29    [20315655]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
Станислав34
Member

Откуда:
Сообщений: 3
да уж, как то вот так...

replase не подходит для этого
20 мар 17, 21:34    [20315676]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
o-o
Guest
массовая китаезация устроит?
select stuff (N'Станислав34',1,3, 'HUE');

по мотивам

К сообщению приложен файл. Размер - 27Kb
20 мар 17, 21:43    [20315695]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
o-o
Guest
можно конечно это и кириллицей набрать,
начальник должен оценить
20 мар 17, 21:46    [20315700]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
Станислав34
Member

Откуда:
Сообщений: 3
спасибо за помощь, попробую, посмотрим что получиться!
20 мар 17, 21:55    [20315718]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
iiyama
Member

Откуда:
Сообщений: 341
Станислав34,

Озвучьте полностью задачу как Вы ее получили. Может надо совсем не то, что Вы написали
21 мар 17, 10:21    [20316400]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 2371
iiyama
Станислав34,

Озвучьте полностью задачу как Вы ее получили. Может надо совсем не то, что Вы написали

заодно и скл 16 купят :)
21 мар 17, 10:26    [20316412]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
Станисла34
Member

Откуда:
Сообщений: 1
задача была изменить поле Фамилия в строке с персональными данными так что бы после третьей буквы было написано TESTNAMETESTNAME и вот что у меня сегодня получилось

Update [dbo].[PERSONAL] SET NAME= left(NAME,3)+'TESTNAMETESTNAME'
21 мар 17, 22:11    [20319283]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 4464
Станисла34,

замысловато. ID впишите для обфускации.
22 мар 17, 01:39    [20319598]     Ответить | Цитировать Сообщить модератору
 Re: Как изменить первые две бувы в поле String?  [new]
user89
Member

Откуда:
Сообщений: 1948
Станисла34,

а зачем Вы новый ник создали?
Была похожая задача по маскированию данных. Делал через hashbytes, а нормальное/искаженное значение складывалось в отдельную таблицу, типа такого
declare @t table (FIO varchar(500))
declare @res table (FIO varchar(500), maskFIO varchar(500))

insert @t(FIO) values ('Иванов'), ('Петров'), ('Сидоров')

;with t as (
  select FIO,
  'FIO ' + ltrim(str(checksum(hashbytes('md5',FIO)),11)) [maskFIO]
  from @t
)
insert @res
  select FIO, maskFIO from t

select * from @res
Поскольку длина фамилий не очень большая, то цифры от checksum(hashbytes...) будут уникальными.

З.Ы. на реальной базе маскировались строки длиной 100-250 символов, на таблице в 20 тыс. записей, коллизий не возникало.
22 мар 17, 09:28    [20319924]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить