Предикат match
Предикат позволяет сформулировать условие соответствия строчного значения результату табличного подзапроса. Синтаксис определяется следующим правилом:
match_predicate ::= row_value_constructor MATCH [ UNIQUE ] [ SIMPLE | PARTIAL | FULL ] query_expression
Степень первого операнда должна совпадать со степенью таблицы-результата выражения запроса. Типы данных столбцов первого операнда должны быть совместимы с типами соответствующих столбцов табличного подзапроса. Сравнение пар соответствующих значений производится аналогично тому, как это специфицировалось для предиката сравнения.
Пусть x обозначает строку-первый операнд. Тогда:
- Если отсутствует спецификация вида сопоставления или специфицирован тип сопоставления SIMPLE, то:
- если значение некоторого столбца x является неопределенным, то значением условия является true;
- если в x нет неопределенных значений, то:
- если не указано UNIQUE, и в результате выражения запроса существует (возможно, не уникальная) строка s в такая, что x = s, то значением условия является true;
- если указано UNIQUE, и в результате выражения запроса существует уникальная строка s, такая, что x = s, то значением условия является true;
- в противном случае значением условия является false.
Если в условии присутствует спецификация PARTIAL, то:если все значения в x являются неопределенными, то значение условия есть true;иначе:если не указано UNIQUE, и в результате выражения запроса существует (возможно, не уникальная) строка s, такая, что каждое отличное от неопределенного значение x равно соответствующему значению s, то значение условия есть true;если указано UNIQUE, и в результате выражения запроса существует уникальная строка s, такая, что каждое отличное от неопределенного значение x равно соответствующему значению s, то значение условия есть true;в противном случае значение условия есть false.Если в условии присутствует спецификация FULL, то:если все значения в x неопределенные, то значение условия есть true;если ни одно значение в x не является неопределенным, то:если не указано UNIQUE, и в результате выражения запроса существует (возможно, не уникальная) строка s, такая, что x = s, то значение условия есть true;если указано UNIQUE, и в результате выражения запроса существует уникальная строка s, такая, что x = s, то значение условия есть true;в противном случае значение условия есть false.в противном случае значение условия есть false.
Содержание раздела