Вход/Регистрация
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
вернуться

Борри Хелен

Шрифт:

SELECT

PROJ_NAME AS Projectname,

COALESCE (e. FULL_NAME, ' [Not assigned]') AS Employeename

FROM PROJECT p

LEFT JOIN EMPLOYEE e ON (e.EMP_NO = p. TEAM_LEADER) ;

В следующем запросе вычисление начинается с самой левой позиции в списке. Если присутствует значение PHONE, запрос проверяет, присутствует ли значение MOBILEPHONE, иначе он возвращает строку 'unknown' (Неопределенный):

SELECT

COALESCE(Phone, MobilePhone, 'Unknown') AS Phonenumber

FROM Relations

Связанные или похожие функции

Пользователи Firebird 1.0.x, смотрите внешние функции INVL и SNVL.

NULLIF

NULLIF возвращает NULL в случае соответствия двух непустых значений, иначе он возвращает значение подвыражения.

Доступность

DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.

Синтаксис

NULLIF (значение 1, значение 2)

Аргументы

значение 1 - столбец или вычисляемое выражение.

значение 2- константа или выражение, с которым сравнивается значение 1. Если они соответствуют, NULLIF возвращает NOLL.

Возвращаемое значение

Возвращаемое значение будет NULL, если значение 1 и значение 2 соответствуют друг другу. ЕСЛИ нет соответствия, возвращается значение 1.

Замечания

NULLIFO является сокращением для следующего выражения CASE: CASE WHEN(VALUE_1 = value_2) THEN NULL ELSE VALUE_1 END

Пример

Этот оператор устанавливает значение столбца STOCK из таблицы PRODUCTS в ULL для всех строк, где его текущее значение равно нулю:

UPDATE PRODUCTS

SET STOCK = NULLIF(STOCK, 0)

Связанные или похожие функции

Пользователи Firebird 1.0.x, смотрите INULLIF и SNULLIF.

Определение столбцов COMPUTED BY

В спецификации таблицы вы можете создать столбцы, называемые вычисляемыми, которые хранят не "жесткие" значения, а выражение, вычисляющее значение, когда к столбцу обращается запрос. Выражение, определяемое для столбца, обычно включает значения одного или более других столбцов текущей строки или контекстные переменные сервера. Вот простая иллюстрация:

ALTER TABLE MEMBERSHIP

ADD FULL_NAME COMPUTED BY FIRST_NAME || ' ' || LAST_NAME;

Также возможно использование выражения подзапроса для получения значения такого столбца - эту возможность следует использовать осторожно, исключив нежелательные зависимости. Информацию о вычисляемых столбцах см. в главе 16.

Условия поиска

Возможность конструировать "формулы" для задания условий поиска при выборе наборов, локализации строк при изменениях и удалениях, а также применение правил для создания входных данных является фундаментальной характеристикой языка запросов. Выражения заполняют весь SQL, потому что они обеспечивают алгебру для контекста добавления данных в хранимые абстрактные данные и представления их в виде информации.

Выражения также играют важную роль в контексте разбора входных данных.

Предложения WHERE

Предложение WHERE в операторе задает условия для выбора строк выходного набора или определения строк, на которые воздействуют операции (UPDATE, DELETE). Почти все столбцы таблицы могут быть использованы в выражении поиска в предложении WHERE. Если с элементом данных можно оперировать в SQL, то его можно проверять. Вспомните, что предикат поиска является утверждением. Простые или сложные утверждения являются формулами. Мы конструируем формулы для задания условий. Условия должны быть истинными для каждой строки в наборе, с которой оперирует главное предложение нашего запроса.

Инверсия операндов

Упрощенный синтаксис предикатов в предложении WHERE имеет вид:

WHERE значение оператор значение

Другими словами, в соответствии с синтаксисом оба следующих утверждения являются правильными:

WHERE ACOL = значение

и

WHERE значение = ACOL

Для предикатов, включающих символы операторов эквивалентности (= и <>), а также некоторые другие (например, LIKE), синтаксический анализатор SQL понимает оба способа и трактует их как эквивалентные. Другие операторы вызовут исключение или неопределенную ошибку при перестановке левой и правой части предиката.

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

Например, множество предикатов в форме

<выражение-или-константа> = COLUMNX

делают работу по исправлению ошибок и пересмотру кода каторжным трудом по сравнению с

  • Читать дальше
  • 1
  • ...
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: