2016-01-06 3 views
0

Я недавно установил мастер службы данных на экземпляре SQL Developer и я теперь в состоянии выполнить следующий запрос, когда база данных MDS выбрана в SQL Studio Manager:Скалярная функция - вывод таблицы

SELECT mdq.Similarity(N'Alexia Geogio', N'Alexandra George', 0, 0.0, 0.0); 

Теперь, пожалуйста, см DDL ниже:

create table #Person (ID int not null identity, Name varchar(100), primary key (ID)) 
INSERT INTO #Person (Name) values ('Alexia Geogio') 
INSERT INTO #Person (Name) values ('Alexandra George') 
INSERT INTO #Person (Name) values ('Ian') 
INSERT INTO #Person (Name) values ('Iain') 

можно ли получить вывод, как это с помощью оператора SQL (три колонки):

Alexia Geogio Alexandra George 0.5625 
Alexandra George Alexia Geogio 0.5625 
Ian Iain 0.75 
Iain Ian 0.75 

mdq.Similarity - функция скалярного значения для всех, кто этого не знал.

Я считаю, что, поскольку это не функция, ориентированная на таблицу, то я ничего не могу сделать.

+0

Как вы намерены связать строки таблицы для себя? Всегда ли это строки 1 и 3, 2 и 4 и т. Д. Или вы хотите сравнить каждую строку с каждой строкой _other_ (например, также есть результат для «Alexia Geogio Ian»? –

ответ

2

Я думаю, что вопрос, как это делает то, что вы хотите:

select name1, name2, similarity 
from (select p1.name as name1, p2.name as name2, 
      mdq.Similarity(p1.name, p2.name, 0, 0.0, 0.0) as similarity 
     from #person p1 cross join 
      #person p2 
    ) pp 
where similarity > @SimilarityLimit -- perhaps 0 
order by similarity; 
+0

Спасибо. Это в основном то, что я искал. typo: pt1. – w0051977

Смежные вопросы