Чтение онлайн

ЖАНРЫ

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Борри Хелен

Шрифт:

поле- поле типа данных DATE, TIME или TIMESTAMP (столбец, переменная или выражение).

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

Все части возвращают SMALLINT за исключением SECOND, которое возвращает

DECIMAL(6,4).

Замечания

EXTRACT будет работать только со значениями, которые преобразуются к полям дата/время.

Пример

Следующий оператор возвращает имена и дни рождения, упорядоченные no BIRTHDAY, для всех участников, имеющих день рождения в текущем месяце:

SELECT

FIRST_NAME,

LAST_NAME,

EXTRACT(DAY FROM DATE_OF_BIRTH) AS BIRTHDAY

FROM MEMBERSHIP

WHERE DATE_OF_BIRTH IS NOT NULL

AND EXTRACT (MONTH FROM DATE_OF_BIRTH) = EXTRACT (MONTH FROM

CURRENT_DATE)

ORDER BY 3;

Строковые
функции

Firebird имеет только две внутренние строковые функции. Большое количество строковых функций доступно во внешних функциях (см. следующий раздел этой главы).

SUBSTRING

SUBSTRING является внутренней функцией, реализующей функцию ANSI SQL SUBSTRING. Она возвращает поток, состоящий из байта с номером начальная-позиция и всех последующих байтов до конца строки значение. Если указано необязательное предложение FOR длина, она вернет меньшее из длина байт и количество байт до конца входного потока.

Доступность

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

Синтаксис

SUBSTRING(значение FROM начальная-позиция [FOR длина])

Необязательные ключевые слова

Необязательное предложение FOR задает длину возвращаемой подстроки.

Аргументы

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

начальная-позиция должна преобразовываться в целое >= 1. Не может быть заменяемым параметром.

длина должна преобразовываться в целое >= 1. Не может быть заменяемым параметром.

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

Возвращаемое значение является строкой.

Замечания

Значения начальная-позиция и длина являются позициями байтов, что имеет значение для многобайтовых наборов символов.

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

Для аргументов столбцов BLOB указанный столбец должен быть двоичным BLOB (SUB_TYPE 0) или текстовым BLOB (SUB_TYPE 1) с набором символов один байт на символ. В настоящий момент функция не обрабатывает текстовые BLOB с наборами символов Chinese (максимум два байта на символ) и Unicode (максимум три байта на символ).

Пример

Следующий оператор будет изменять значение столбца COLUMNB, присваивая ему строку до 99 символов, начиная с четвертой позиции оригинальной строки:

UPDATE ATABLE

SET COLUMNB = SUBSTRING (COLUMNB FROM 4 FOR 99)

WHERE ...

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

См. также внешние функции SUBSTR, SUBSTRLEN и RTRIM.

UPPER

Преобразует все символы строки в верхний регистр.

Доступность

DSQL, PSQL, ISQL, ESQL; обеспечивает работу со строками

в тех наборах символов и последовательностях сортировки, которые поддерживают преобразование нижний/верхний регистры. Любая платформа.

Синтаксис

UPPER(значение)

Аргументы

значение является столбцом, переменной или выражением, которое преобразуется в строковый тип.

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

Если набор символов и последовательность сортировки поддерживают преобразование в верхний регистр, функция возвращает строку, в которой все символы преобразованы в верхний регистр. Строка имеет ту же длину, что и входное значение. Для наборов символов, не поддерживающих преобразование в верхний регистр, функция возвращает неизмененное входное значение, [76]

Замечания

Входное значение не может иметь тип данных BLOB.

76

До Firebird 1.5 функция UPPER работала только для столбцов COLLATE PXW_CYRL (или при явном указании для конкретного столбца). В Firebird 1.5 таблица перекодировки символов в верхний регистр есть и в "умолчательном" COLLATE WIN1251.
– Прим. науч. ред.

Пример

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

ALTER TABLE MEMBERSHIP

ADD CONSTRAINT CHECK_LOCALITY_CASE

CHECK(LOCALITY = UPPER(LOCALITY));

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

См. также внешние функции LOWER и F_PROPERCASE.

Функция для получения значения генератора

Функция GEN_ID является механизмом, с помощью которого модули PSQL и приложения получают числа от генераторов. Генераторы подробно обсуждаются в главе 9. См. также разд. "Реализация автоинкрементных ключей" главы 31.

GEN_ID

GEN_IDO вычисляет и возвращает значение генератора.

Доступность

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

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

Аргументы

значение1 является идентификатором существующего генератора.

значение2 является значением шага - целый тип или выражение, которое преобразуется в целый тип.

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

Возвращается значение типа BIGINT.

Замечания

Обычно значение шага- единица. Значение шага 0 вернет последнее значение генератора. Возможно большее значение шага, так же как и отрицательное значение. При этом вам не следует использовать отрицательные значения, если только вы действительно не хотите получить последующее значение.

GEN_IDO всегда выполняется вне контекста какой-либо транзакции. Эта операция в Firebird доступна только пользователю. Как только число будет получено от генератора, оно никогда не будет создано тем же генератором, за исключением случаев, когда пользователь изменит последовательность, используя отрицательную величину шага, или с помощью оператора SET GENERATOR.

Поделиться с друзьями: