Введение в стандарты языка баз данных SQL


Допустимые предикаты и условия поиска


Внешне предикаты, которые можно использовать в условиях поиска SQL/92, очень похожи на предикаты SQL/89. Но, во-первых, ассортимент допустимых предикатов расширен, а во-вторых, возможности задания условий "старых" предикатов стали существенно шире. Поэтому мы перечислим все возможные предикаты с приведением их синтаксиса и кратких пояснений. В конце раздела будут приведены правила формулировки и семантика условий поиска.

Предикат позволяет специфицировать условие, результатом вычисления которого может быть true, false или unknown. В языке SQL/92 допустимы следующие предикаты:

<predicate> ::= <comparison predicate> |<between predicate> |<in predicate> |<like predicate> |<null predicate> |<quantified comparison predicate> |<exists predicate> |<unique predicate> |<match predicate> |<overlaps predicate>

3.4.1. Предикат сравнения

В SQL/92 этот предикат предназначен для спецификации сравнения двух строчных значений. Синтаксис предиката следующий:

<comparison predicate> ::= <row value constructor> <comp op> <row value constructor> <comp op> ::= <equals operator> |<not equals operator> |<less than operator> |<greater than operator> |<less than or equals operator> |<greater than or equals operator>

Пояснения:

  1. Строки-операнды должны быть одинаковой степени.
  2. Типы данных соответствующих значений строк-операндов должны быть совместимы.
  3. Пусть X и Y обозначают соответствующие элементы строк-операндов, а XV и YV - их значения

      (a) если XV и/или YV являются неопределенными значениями, то значение условия "X <compop> Y" есть unknown;

      (b) если XV и YV не являются неопределенными значениями, то значением условия "X <compop> Y" является true или false в соответствии с естественными правилами применения операции сравнения.

  4. Числа сравниваются в соответствии с алгебраическими значениями.
  5. Сравнение двух текстовых строк производится следующим образом: