淘先锋技术网

首页 1 2 3 4 5 6 7

Oracle的匹配函数MATCHED可以在查询中使用,主要用于筛选出由外连接查询所找到的那些记录,而且仅返回匹配的记录。这个函数通常和外连接查询一起使用。

MATCHED函数的作用是过滤外连接查询结果集中所有未匹配的记录。我们来看一个例子:

SELECT emp.ename, sal.grade
FROM emp LEFT JOIN sal ON emp.sal BETWEEN sal.losal AND sal.hisal
WHERE sal.grade IS NOT NULL
AND  matched  --匹配
ORDER BY ename;

在该查询中,LEFT JOIN连接emp表和sal表。查询的结果是emp表和sal表的公共部分以及只在emp表中的记录。

在连接过程中,每个emp表中的记录都会和与之相匹配的sal表中的记录连接起来。如果某个emp表中的记录没有匹配到任何一个sal表中的记录,那么就会在这个记录的sal.grade字段上返回一个NULL值。

而在WHERE子句中,我们只要查找那些已经匹配到的记录(matched),所以最后查询的结果是匹配到的emp表记录和其对应的sal表的grade字段。

需要注意的是,MATCHED函数只能在外连接查询和全外连接查询中使用,不适用于普通的内连接查询。

再来看一个例子,下面的语句使用了FULL OUTER JOIN实现了全外连接查询和MATCHED函数一起使用,结果返回了emp表和sal表中所有的记录及其对应的等级grade字段:

SELECT emp.ename, sal.grade
FROM emp FULL OUTER JOIN sal ON emp.sal BETWEEN sal.losal AND sal.hisal
WHERE matched  --匹配
ORDER BY ename;

在一个FULL OUTER JOIN查询中,每个表中的所有记录都将被返回。对于那些在emp表和sal表中都找不到匹配记录的部分(即值为NULL的部分),MATCHED还会将这些记录筛选掉,从而只返回已经匹配到的记录。

综上所述,MATCHED函数在外连接查询中非常实用,可以对结果进行更精确的筛选,有效地帮助我们解决复杂的数据查询问题。