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

Откуда:
Сообщений: 2
Добрый день!

Помогите, пожалуйста, написать запрос к таблице (по сути - к одному столбцу).
Имеется перечень различных имен в столбце, допустим:

NAME (varchar(50))
AcdeFg
aacdefaa
bbno#pk#p
oo#pk#
...


Необходимо написать запрос, который бы находил пары имен из этого столбца, у которых имеется совпадение не менее, чем четырех идущих подряд символов, т.е. в вышеуказанном примере в результате должно быть:


NAME1 NAME2
aacdefaa AcdeFg
bbno#pk#p oo#pk#


Заранее спасибо!
23 май 14, 07:46    [16059156]     Ответить | Цитировать Сообщить модератору
 Re: Частичное совпадение  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
AngryBat,

например так
declare @t table(s varchar(50))
insert @t values ('шаражка'),('монтаж'),('шараж-монтаж')

;with cte as
(select s,SUBSTRING(s,v.i,4) ss
from @t
   cross join (values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),(21),
          (22),(23),(24),(25),(26),(27),(28),(29),(30),(31),(32),(33),(34),(35),(36),(37),(38),(39),(40),(41),(42),(43),
          (44),(45),(46),(47),(48),(49),(50)) v(i)
where v.i<=datalength(s)-4
)
select distinct c1.s, c2.s
from cte c1
      cross join cte c2
where c1.ss=c2.ss
	  and c1.s<>c2.s
	  and c2.s>c1.s
23 май 14, 08:19    [16059197]     Ответить | Цитировать Сообщить модератору
 Re: Частичное совпадение  [new]
AngryBat
Member

Откуда:
Сообщений: 2
Большое спасибо!

И как я могла забыть про SUBSRING!
23 май 14, 08:47    [16059263]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить