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

Откуда:
Сообщений: 4
Уважаемые! Нужна помощь!

Задача в следующем, есть строка к примеру "12345678", есть вариант строки "12335578" надо посчитать насколько эти строки совпадают. То есть сколько в них одинаковых символов на одинаковых местах. В данном примере ответ будет 7. Как это сделать на SQL?
19 окт 09, 16:33    [7806747]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
pegr
Member

Откуда:
Сообщений: 4
точнее 6 :)
19 окт 09, 16:38    [7806799]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
Glory
Member

Откуда:
Сообщений: 104760
pegr
В данном примере ответ будет 7. Как это сделать на SQL?

Ну так если у вас есть алгоритм, который вычислил вам эту "7", то перенесите его на SQL
19 окт 09, 16:38    [7806800]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
pegr
Member

Откуда:
Сообщений: 4
Glory, Как перенести? алгоритм прост: сравниваем посимвольно подстроки, при совпаденни +1, в итоге получаем некую меру совпадимости.
19 окт 09, 16:39    [7806811]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
Glory
Member

Откуда:
Сообщений: 104760
pegr
Glory, Как перенести? алгоритм прост: сравниваем посимвольно подстроки, при совпаденни +1, в итоге получаем некую меру совпадимости.

И в чем проблема также сделать в SQL ?
19 окт 09, 16:40    [7806829]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
iljy
Member

Откуда:
Сообщений: 8711
pegr,

select number, substring(s, number, 1) from
(select '1235567' s) t1
	cross apply
(select number from master..spt_values
 where type = 'P' and number between 1 and len(s)
)t2
разбиение строки на символы. Дальше справитесь надеюсь?
19 окт 09, 16:48    [7806903]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
DECLARE @S1 VARCHAR(100)='12345678';
DECLARE @S2 VARCHAR(100)='12335578';

SELECT SUM(CASE WHEN SUBSTRING(@S1,number,1)=SUBSTRING(@S2,number,1)THEN 1 ELSE 0 END)
FROM master.dbo.spt_values
WHERE type='P' AND number>=1 AND number<=LEN(@S1) AND number<=LEN(@S2);
19 окт 09, 16:48    [7806908]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
pegr
Member

Откуда:
Сообщений: 4
iap,

Спасибо большое :) спасли чайника!!!
19 окт 09, 21:19    [7808395]     Ответить | Цитировать Сообщить модератору
 Re: Подсчет релевантности строки и подстроки  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
pegr
iap,

Спасибо большое :) спасли чайника!!!
А я вот подумал, что, может быть, так лучше:
DECLARE @S1 VARCHAR(100)='12345678';
DECLARE @S2 VARCHAR(100)='12335578';

SELECT COUNT(*)
FROM master.dbo.spt_values
WHERE type='P' AND number>=1 AND number<=LEN(@S1) AND number<=LEN(@S2)
  AND SUBSTRING(@S1,number,1)=SUBSTRING(@S2,number,1);
19 окт 09, 21:36    [7808432]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить