Условия поиска
Условия поиска
Возможность конструировать "формулы" для задания условий поиска при выборе наборов, локализации строк при изменениях и удалениях, а также применение правил для создания входных данных является фундаментальной характеристикой языка запросов. Выражения заполняют весь SQL, потому что они обеспечивают алгебру для контекста добавления данных в хранимые абстрактные данные и представления их в виде информации.
Выражения также играют важную роль в контексте разбора входных данных.
Предложения WHERE
Предложение WHERE в операторе задает условия для выбора строк выходного набора или определения строк, на которые воздействуют операции (UPDATE, DELETE). Почти все столбцы таблицы могут быть использованы в выражении поиска в предложении WHERE. Если с элементом данных можно оперировать в SQL, то его можно проверять. Вспомните, что предикат поиска является утверждением. Простые или сложные утверждения являются формулами. Мы конструируем формулы для задания условий. Условия должны быть истинными для каждой строки в наборе, с которой оперирует главное предложение нашего запроса.
Инверсия операндов
Упрощенный синтаксис предикатов в предложении WHERE имеет вид:
WHERE значение оператор значение
Другими словами, в соответствии с синтаксисом оба следующих утверждения являются правильными:
WHERE ACOL = значение
и
WHERE значение = ACOL
Для предикатов, включающих символы операторов эквивалентности (= и <>), а также некоторые другие (например, LIKE), синтаксический анализатор SQL понимает оба способа и трактует их как эквивалентные. Другие операторы вызовут исключение или неопределенную ошибку при перестановке левой и правой части предиката.
В случае "реверсивных" типов порядок размещения операндов в предикате является вопросом стиля. При этом по опыту автора можно сказать, что читаемость сложных предикатов SQL в исходных кодах клиента и PSQL является обратно пропорциональной количеству предикатов, представленных с проверяемым значением, размещенных справа от оператора, как во втором примере.
Например, множество предикатов в форме
<выражение-или-константа> = COLUMNX
делают работу по исправлению ошибок и пересмотру кода каторжным трудом по сравнению с
COLUMNX = <выражение-или-константа>
Важно принимать дополнительные "усилия", чтобы сделать все выражения совместимыми.
Массивы, BLOB и строки
Массивы вовсе не могут использоваться в предикатах поиска, поскольку SQL не имеет средств доступа к хранящимся в массивах данным. Выражения для столбцов BLOB являются весьма ограниченными, BLOB не может сравниваться на равенство ни с другим BLOB, ни с любым другим типом данных. Текстовый BLOB может использоваться в STARTING WITH и с некоторыми ограничениями в предикатах LIKE и CONTAINING. Некоторые внешние функции могут работать с типами BLOB - см. функции BLOB В приложении 1.
Строки могут проверяться любыми операторами сравнения, хотя такие операторы, как <, >, >= и <=, не часто являются полезными.