Некоторые дополнительные скалярные функции

Скалярные функции обработки строк

Некоторые скалярные функции обработки строк приведены в таблице 4.10.

Таблица 4.10. Функции обработки строк

Функция Описание
ASCII (выражение) Возвращает числовое значение ASCII кода для самого левого символа аргумента
CHR (выражение) Возвращает символ, значение ASCII кода которого задано аргументом
CONCAT (выражение1, выражение2) Возвращает строку, полученную в результате сцепления (конкатенации) двух строк, заданных аргументами
INSERT (аргумент1, аргумент2, аргумент3, аргумент4) Возвращает строку, в которой аргумент3 байтов были удалены из строки аргумент1 (начиная с позиции аргумент2), и строка аргумент4 была вставлена в строку аргумент1 (начиная с позиции аргумент2).
LCASE (выражение) LOWER (выражение) Возвращает строку, в которой все буквы преобразованы к буквам в нижнем регистре
LEFT (выражение1, выражение2) Возвращает строку, представленную выражение2 лево установленными символами из строки, заданной выражением1. При необходимости, строка, заданная выражением1, дополняется справа пробелами
LOCATE(искомая_строка, исходная_строка [, начальная_позиция ]) Возвращает начальную позицию вхождения искомой строки в исходную строку; поиск начинается с заданной начальной позиции или с начала строки, если позиция не задана
LTRIM (выражение) Удаляет лидирующие пробелы из строки, заданной выражением
POSSTR(исходная_строка , искомая_строка) Возвращает начальную позицию вхождения искомой строки в исходную строку
REPEAT (аргумент1, аргумент2) Возвращает символьную строку, состоящую из аргумент1, повторенного argument2 раз
REPLACE (аргумент1, аргумент 2, аргумент3) Замещает все вхождения аргумент2 в аргумент1 значениями аргумент3.
RIGHT (выражение1, выражение2) Возвращает строку, представленную выражение2 право установленными символами из в строки, заданной выражением1. При необходимости, строка, заданная выражением1, дополняется справа пробелами
RTRIM(выражение) Удаляет хвостовые пробелы из строки, заданной выражением
SPACE(выражение) Возвращает символьную строку, состоящую из указанного выражением количества пробелов
SUBSTR(строка, начальная_позиция [, длина ]) Возвращает подстроку заданной длины из строки, начиная с начальной позиции; если длина не указана, выделяется весь остаток строки. Символы в строке нумеруются, начиная с 1
UCASE(выражение) UPPER(выражение) Возвращает строку, в которой все буквы преобразованы к буквам в верхнем регистре

Некоторые дополнительные скалярные функции приведены в таблице 4.11.

Таблица 4.11. Дополнительные функции

Функция Описание
COALESCE(выражение [, выражение … ]) Возвращает значение первого не NULL выражения, или NULL, если все выражения имеют NULL значение
IDENTITY_VAL_LOCAL() Возвращает последнее значение, присвоенное колонке с атрибутом identity
LENGTH(выражение) Возвращает длину значения
NULLIF(аргумент1, аргумент2) Возвращает значение null, если аргументы равны; в противном случае возвращает значение первого аргумента
RAISE_ERROR(sqlstate, строка_диагностики) Возбуждает состояние ошибки в SQLCA. Значение sqlstate, которое должно быть возвращено, задается первым аргументом. Второй аргумент содержит произвольный текст, который должен быть возвращен
VALUE(выражение [, выражение … ]) Синоним функции COALESCE. Возвращает значение первого не NULL выражения, или NULL, если все выражения имеют NULL значение

Предикаты

Как уже говорилось ранее, предикат определяет условие, которое может быть истинным, ложным или не определенным.

Ко всем типам предикатов применимы следующие правила:

• все значения, указанные в предикате, должны быть совместимыми;

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

Некоторые предикаты были рассмотрены при описании предложения CREATE TABLE ЯОД. Ниже приводятся дополнительные способы записи предикатов, используемые при написании запросов на языке SQL.

Предикат с квантором

Предикат с квантором может быть записан двумя способами:

выражение операция_отношения квантор (запрос)

(выражение, …) = квантор_существования (запрос)

В первом случае в качестве квантора могут быть указаны квантор всеобщности ALL и кванторы существования SOME и ANY.

Во втором случае допускается использование только квантора существования SOME или ANY.

Операции отношения уже рассматривались ранее.

Предикат с квантором сравнивает значение или значения, указанные в левой части предиката (до операции отношения), с некоторым множеством значений, получаемым в результате выполнения запроса.

Запрос, записанный в предикате, должен возвращать в качестве результата любое количество строк, содержащих столько колонок, сколько выражений указано в левой части предиката (для первой формы – обязательно одна колонка, для второй – может быть несколько).

Если указывается ALL (квантор всеобщности):

• результат предиката – истина, если запрос ничего не возвращает или если указанное операцией отношение истинно для каждого значения, возвращаемого запросом;

• результат предиката – ложь, если указанное отношение не выполняется хотя бы для одного значения, возвращаемого запросом;

• результат предиката не определен, если указанное отношение не является ложным для значений, возвращаемых запросом, и, по крайней мере, одно сравнение не определено из-за NULL значений.

Если указываются SOME или ANY (кванторы существования):

• результат предиката – истина, если указанное отношение истинно для каждого значения хотя бы одной строки, возвращаемой запросом;

• результат предиката – ложь, если запрос ничего не возвращает или если указанное отношение не выполняется хотя бы для одного значения в каждой строке, возвращаемой запросом;

• результат предиката не определен, если указанное отношение не является истинным для строк, возвращаемых запросом, и, по крайней мере, одно сравнение не определено из-за NULL значений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: