SQL - использование функции SUBSTRINGИсточник: org
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) могут воспользоваться любым методом. |