Шрифт:
UPDATE MEMBERSHIP
SET MEMBER_CODE = MEMBER_GROUP || CAST(MEMBER_ID AS CHAR(8))
WHERE MEMBER_CODE IS NULL;
См. главу 8, где более подробно осуждается функция CAST, а также последующие главы, в которых индивидуально рассматриваются типы данных.
Эта функция выделяет часть полей типа данных DATE, TIME и TIMESTAMP в виде числа.
DSQL, PSQL, ISQL, ESQL, Firebird 1.5 и выше. Любая платформа.
EXTRACT(часть FROM поле)
YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | WEEKDAY | YEARDAY
часть является одним значением из указанного списка необязательных ключевых слов, WEEKDAY выделяет день недели (воскресенье = 1, понедельник = 2 и т.д.), YEARDAY выделяет день в году (от 1 января = 1 до 366).
поле- поле типа данных 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 является внутренней функцией, реализующей функцию 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.
Преобразует все символы строки в верхний регистр.