Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

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.

Пример

Следующее ограничение 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.

Пример

Следующий оператор возвращает новое значение генератора GEN_SERIAL:

SELECT GEN_ID(GEN_SERIAL, 1) FROM RDB$DATABASE;

В приведенном далее примере генератор используется в триггере BEFORE INSERT для получения значения первичного ключа:

CREATE TRIGGER BI_AUTHORS FOR AUTHORS

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.AUTHOR_ID IS NULL) THEN

NEW.AUTHOR_ID = GEN_ID(GEN_AUTHOR_ID, 1);

END ^

Агрегатные функции

Агрегатные (обобщенные) функции выполняют вычисления над значениями столбца, например, значениями, выбранными из числового столбца запрашиваемого набора.

Firebird имеет группу агрегатных функций, которые чаще всего используются в комбинации с условиями группирования для вычисления итогов или статистики на уровне группы. Агрегатными функциями являются: SUM(), вычисляющая итог, MAX() и MIN(), возвращающие наибольшее и наименьшее значение соответственно, и AVG(), вычисляющая среднее значение. Функция COUNT() также ведет себя как агрегатная функция в сгруппированных запросах.

В главе 23 более подробно рассматривается участие агрегатных функций в сгруппированных запросах.

"Негруппированные" объединения
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных