SQL - использование функции SUBSTRING
SQL-функция SUBSTRING может использоваться в приложениях Delphi, работающих с
запросами к локальной SQL, но она не поддерживается при работе с таблицами
InterBase (IB) и Local InterBase Server (LIBS). Ниже приведен синтаксис функции
SUBSTRING, примеры ее использования в запросах к local SQL, и альтернатива для
возвращения тех же результатов для таблиц IB/LIBS.
Синтаксис функции SUBSTRING: SUBSTRING(<column> FROM <start> [, FOR <length>]) Где:
<column> - имя колонки таблицы, из которой должна быть получена
подстрока (substring).
<start> место в значении колонки, начиная с которого извлекается
подстрока.
<length> длина извлекаемой подстроки.
Функция SUBSTRING в примере ниже возвратит второй, третий и четвертый символы
из колонки с именем COMPANY: SUBSTRING(COMPANY FROM 2 FOR 3) Функция SUBSTRING может быть
использована и для списка полей в SELECT-запросе, где ключевое слово WHERE
допускает сравнение значения с определенным набором колонок. Функция SUBSTRING
может использоваться только с колонками типа String (на языке SQL тип CHAR). Вот
пример функции SUBSTRING, использующей список колонок в SELECT-запросе
(используем демонстрационную таблицу Paradox CUSTOMER.DB): SELECT (SUBSTRING(C."COMPANY" FROM 1 FOR 3)) AS SS
FROM "CUSTOMER.DB" C Данный SQL-запрос извлекает первые три символа из
колонки COMPANY, возвращаемой как вычисляемая колонка с именем SS. Вот пример
функции SUBSTRING, использованной в SQL-запросе с ключевым словом WHERE
(используем ту же самую таблицу): SELECT C."COMPANY"
FROM "CUSTOMER.DB" C
WHERE SUBSTRING(C."COMPANY" FROM 2 FOR 2) = "an" Данный запрос возвратит
все строки таблицы, где второй и третий символы в колонке COMPANY равны "ar".
Так как функция SUBSTRING не поддерживается в базах данных IB и LIBS,
операции с подстроками со списком колонок в запросе невозможны (исключение: IB
может работать с подстроками через функции, определяемые пользователем,
User-Defined Functions). Но с помощью оператора LIKE и сопутствующих символьных
маркеров подстановки возможно работать с подстрокой и в случае WHERE. Вот пример
на основе таблицы EMPLOYEE (в базе данных EMPLOYEE.GDB): SELECT LAST_NAME, FIRST_NAME
FROM EMPLOYEE
WHERE LAST_NAME LIKE "_an%" Данный SQL-запрос возвратит все строки
таблицы, где второй и третий символы в колонке LAST_NAME равны "an", см.
предыдущий пример на основе таблицы Paradox. Базам данных IB и LIBS для
выполнения сравнения подстроки в операторе запроса WHERE данный метод необходим
(и невозможно воспользоваться функцией SUBSTRING), таблицы же Paradox и dBASE
(например, local SQL) могут воспользоваться любым методом.
|