Предикат match
Предикат позволяет сформулировать условие соответствия строчного значения результату табличного подзапроса. Синтаксис определяется следующим правилом:
<match predicate> ::= <row value constructor> MATCH [ UNIQUE ] [ PARTIAL FULL ] <table subquery>
Пояснения:
(a) если некоторое значение в R является неопределенным, то значением условия является true;
(b) если в R нет неопределенных значений, то
(i) если не указано UNIQUE и существует (возможно, не уникальная) строка RTi в результате табличного подзапроса такая, что R = RTi, то значение условия есть true;
(ii) если указано UNIQUE и в результате табличного подзапроса существует уникальная строка RTi такая, что R = RTi, то значение условия есть true;
(iii) в противном случае значением условия является false.
(a) если все значения в R неопределенные, то значение условия есть true;
(b) иначе:
(i) если не указано UNIQUE и в результате табличного подзапроса существует (возможно, не уникальная) строка RTi такая, что каждое отличное от неопределенного значение R равно соответствующему значению RTi, то значение условия есть true;
(ii) если указано UNIQUE и в табличном подзапросе существует уникальная строка RTi такая, что каждое отличное от неопределенного значение R равно соответствующему значению RTi, то значение условия есть true;
(iii) в противном случае значение условия есть false.
(a) если все значения в R неопределенные, то значение условия есть true.
(b) если в R нет неопределенных значений, то
(i) если не указано UNIQUE и в результате табличного подзапроса существует (возможно, не уникальная) строка RTi такая, что R = RTi, то значение условия есть true;
(ii) если указано UNIQUE и в результате табличного подзапроса существует уникальная строка RTi такая, что R = RTi, то значение условия есть true;
(iii) в противном случае значение условия есть false;
(c) в противном случае значение условия есть false.