Галерея
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.) Далее следует обычное объединение символов, о котором говорилось ранее.