标量值函数 - 输出 table
Scalar Valued function - output table
我最近在 SQL Developer 的一个实例上安装了 Master Data Services,当在 SQL Studio Manager 中选择 MDS 数据库时,我现在能够 运行 以下查询:
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 对于任何不知道的人来说都是标量值函数。
我相信,因为它不是 table 值函数,所以我无能为力。
我认为像这样的查询可以满足您的要求:
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;
我最近在 SQL Developer 的一个实例上安装了 Master Data Services,当在 SQL Studio Manager 中选择 MDS 数据库时,我现在能够 运行 以下查询:
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 对于任何不知道的人来说都是标量值函数。
我相信,因为它不是 table 值函数,所以我无能为力。
我认为像这样的查询可以满足您的要求:
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;