Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Функция SUBSTR

Функция SUBSTRФункция SUBSTR (в Microsoft SQL Server это SUBSTRING) возвращает часть строки, переданной в качестве аргумента, обозначенной начальной позицией и длиной подстроки (в символах). Следующий запрос возвращает первые три символа значения столбца PROD_DESCRIPTION_S. Третий аргумент, определяющий длину извлекаемой подстроки, необязателен в Oracle и DB2 9.5, однако требуется функцией SUBSTRING СУБД Microsoft SQL Server. Если третий аргумент опущен, функция в Oracle и DB2 9.5 вернет все символы, начиная с начальной позиции. В Microsoft SQL Server можно имитировать такой режим работы, используя данную функцию в комбинации с функциями LEN/LENGHT для определения общей длины строки или определяя в качестве соответствующего параметра значение, достаточно большое, чтобы превысить любую потенциально возможную длину строки (но не больше, чем 8000). Например, следующий запрос в SQL Server вернет все символы столбца PROD_DESCRIPTION_S, начиная со второго символа. А теперь усложним пример, чтобы продемонстрировать основные моменты использования данной функции. Предположим, что пользователь хочет получить скомбинированные результаты с номером товара, его ценой и описанием в формате для некоторого приложения компании. Это можно сделать множеством способов, один из которых представлен в следующем запросе (в синтаксисе Microsoft SQL Server). Данный запрос выглядит несколько замысловато, но в нем нет никакой мистики. Функции CHARINDEX/INSTR/POSSTR находят положение символа пробела (CHAR(32)) и вычитают единицу из этого места, чтобы пробел не попал в окончательный результат. Это положение используется в качестве аргумента функции LEFT, определяя, с какой позиции следует возвращать символы. (В Oracle и DB2 9.5 используется функция SUBSTR; в Microsoft SQL Server применяют функцию SUBSTRING, являющуюся обобщенной версией функций LEFT/RIGHT.) Далее следует обычное объединение символов, о котором говорилось ранее.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *