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

Откуда:
Сообщений: 21
Всем Ку!!! Нужна помощь в написании запроса:

Нужно из отношения выбрать все строки, в которых фамилия содержит сочетание символов "ов", строки имеют вид "имя фамилия".
В итоге необходимо возвратить строки типа "имя фамилия", где фамилия например в виде "****ов" или "***ов***", проще говоря нужно оставить имя, а в фамилии оставить только "ов" (их может быть несколько в фамилии), а все остальные символы заменить на "*".
Заранее спасибо!
1 июн 11, 09:47    [10743024]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании запроса  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Davulcu,
0) отобрать сторки по LIKE
1a) разобрать сторку по буквам, прореплейсить (таблица циферь как раз будет в тему)
1б) разобрать строку по позициям 'ов' и реплейсить относительно позиций (сложнее, но скорее всего будет быстее)
2) собрать строку взад
1 июн 11, 09:52    [10743047]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь в написании запроса  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
declare @s varchar(100) = 'Иванов-Овечкин Варфоломей Степанович'
declare @r varchar(100) = replicate('*', len(@s))

;with d(n) as
(
 select
  t1.d *10 + t2.d + 1
 from
  (
   select 0 as d union all select 1 union all select 2 union all select 3 union all select 4 union all
   select 5 union all select 6 union all select 7 union all select 8 union all select 9
  ) as t1 cross apply
  (
   select 0 as d union all select 1 union all select 2 union all select 3 union all select 4 union all
   select 5 union all select 6 union all select 7 union all select 8 union all select 9
  ) as t2
),
c(p) as
(
 select
  charindex('ов', @s, n)
 from
  d
 where
  charindex('ов', @s, n) = n
)
select
 @r = stuff(@r, p, 2, 'ов')
from
 c
 
select @s, @r
1 июн 11, 10:46    [10743441]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить