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) могут воспользоваться любым
методом. |