Skip to main content

Основы SQL для выражений запроса, применяемых в ArcGIS

В этой теме описываются элементы типичных запросов для выборки в ArcGIS. Выражения запросов в ArcGIS используют синтаксис SQL.

Часто используемые запросы: поиск строк

Строковые значения в выражениях всегда заключаются в одинарные кавычки, например:

\(STATE_NAME \space = \space 'California'\)

Строки в выражениях чувствительны к регистру. Чтобы выполнить поиск, зависящий от регистра символов, можно использовать функцию SQL для преобразования всех значений в одинаковый регистр. Для источников данных на основе файлов, таких как базы геоданных или шейп-файлы, для задания регистра выборки можно использовать функции UPPER или LOWER. Например, при помощи следующего выражения будет выбран штат, имя которого написано как 'Rhode Island' или 'RHODE ISLAND':

\(UPPER(STATE_NAME) \space = \space 'RHODE \space ISLAND'\)

Если строка содержит одинарную кавычку, вам в первую очередь потребуется использовать другую одинарную кавычку как символ управляющей последовательности, например:

\(NAME \space = \space 'Alfie''s \space Trough'\)

При помощи оператора LIKE (вместо оператора = ) строится поиск частей строк. Например, данное выражение выбирает Mississippi и Missouri среди названий штатов США:

\(STATE_NAME \space LIKE \space 'Miss%'\)

Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Альтернативно, если вам нужен поиск с символом подстановки, представляющим ровно один символ, используйте знак подчёркивания (_). Например, данное выражение найдет Catherine Smith и Katherine Smith:

\(OWNER_NAME \space LIKE \space '_atherine \space smith'\)

Можно также использовать операторы больше (>), меньше (<), больше или равно (>=), меньше или равно (<=), не равно (<>) и BETWEEN, чтобы выбирать строковые значения на основании их сортировки. Например, этот запрос выберет все города в покрытии, названия которых начинаются с букв от М до Z:

\(CITY_NAME \space >= \space 'M'\)

Строковые функции могут использоваться для форматирования строк. Например функция LEFT вернет определенное количество символов начиная с левого края строки. Данный запрос вернет все штаты, начинающиеся на букву A:

\(LEFT(STATE_NAME,1) \space = \space 'A'\)

Список поддерживаемых функций вы найдете в документации по своей СУБД.

Часто используемые выражения: поиск значений NULL

Вы можете использовать ключевое слово NULL, чтобы отбирать объекты и записи, содержащие пустые поля. Перед ключевым словом NULL всегда стоит IS или IS NOT. Например, чтобы найти города, для которых не была введена численность населения по данным переписи 1996 года, можно использовать следующее выражение:

\(POPULATION \space IS \space NULL\)

Или, чтобы найти все города, для которых указана численность населения, используйте:

\(POPULATION96 \space IS \space NOT \space NULL\)

Часто используемые выражения: поиск чисел

Точка (.) всегда используется в качестве десятичного разделителя, независимо от региональных настроек. В выражениях в качестве разделителя десятичных знаков нельзя использовать запятую.

Вы можете запрашивать цифровые значения, используя операторы равно (=), не равно (<>), больше (>), меньше (<), больше или равно (>=) и меньше или равно (<=), а также BETWEEN (между), например:

\(POPULATION \space >= \space 5000\)

Числовые функции можно использовать для форматирования чисел. Например функция ROUND округлит до заданного количества десятичных знаков данные в файловой базе геоданных:

\(ROUND(SQKM,0) \space = \space 500\)

Список поддерживаемых числовых функций вы найдете в документации по своей СУБД.

Даты и время

Общие правила и часто используемые выражения

В таких источниках данных, как база геоданных, даты хранятся в полях даты–времени. А в покрытиях ArcInfo и шейп-файлах этого нет. Поэтому большинство из примеров синтаксиса запроса, представленных ниже, содержит ссылки на время. В некоторых случаях часть запроса, касающаяся времени, может быть без всякого вреда пропущена, когда известно, что поле содержит только даты; в других случаях её необходимо указывать, или запрос вернет синтаксическую ошибку.

Поиск полей с датой требует внимания к синтаксису, необходимому для источника данных. Если вы создаете запрос в Конструкторе запросов в режиме Условие, правильный синтаксис будет сгенерирован автоматически. Ниже приведен пример запроса, который возвращает все записи после 1 января 2011, включительно, из файловой базы геоданных:

\(INCIDENT_DATE \space >= \space date \space '2011-01-01 \space 00:00:00'\)

Примечание:

Даты хранятся в исходной базе данных относительно 30 декабря 1899 года, 00:00:00. Это действительно для всех источников данных, перечисленных здесь.

Цель этого раздела — помочь вам составлять запросы именно по датам, а не по значениям времени. Если вместе с датой хранится непустое (ненулевое) значение времени (например, 12 января 1999 года, 04:00:00), запрос только по дате не вернёт эту запись — потому что, когда вы передаёте в поле типа "дата-время" только дату, время автоматически заполняется нулями, и в результате отбираются только записи, у которых время равно ровно 00:00:00.

Таблица атрибутов отображает дату и время в удобном для пользователя формате, согласно вашим региональным установкам, а не в формате исходной базы данных. Это подходит для большинства случаев, но имеются и следующие недостатки:

  • Строка, отображаемая в SQL-запросе, может иметь только небольшое сходство со значением, показанным в таблице, особенно когда в нее входит время. Например время, введенное как 00:00:15, будет отображаться в атрибутивной таблице как 12:00:15 AM с региональными настройками США, а сопоставимый синтаксис запроса должен быть Datefield = '1899-12-30 00:00:15'.

  • Атрибутивная таблица не имеет сведений об исходных данных, пока вы не сохраните изменения. Сначала программа) попытается отформатировать введённое значение под свой собственный формат, а затем, при сохранении правок, попытается подогнать итоговое значение под формат базы данных. По этой причине, вы можете вводить время в шейп-файл, но обнаружите, что оно удаляется при сохранении ваших изменений. Поле будет содержать значение '1899-12-30', которое будет отображаться как 12:00:00 AM или эквивалентно, в зависимости от ваших региональных настроек.

Синтаксис дата-время для многопользовательских баз геоданных

Informix

\(Datefield \space = \space 'yyyy-mm-dd \space hh:mm:ss'\)

Часть запроса hh:mm:ss не может быть опущена, даже если она равна 00:00:00.

Oracle

\(Datefield \space = \space date \space 'yyyy-mm-dd'\)

Имейте в виду, что записи, где время не равно нулю, возвращены не будут.

Альтернативный формат при запросах к датам в Oracle следующий:

\(Datefield \space = \space TO_DATE('yyyy-mm-dd \space hh:mm:ss','YYYY-MM-DD \space HH24:MI:SS')\)

Второй параметр 'YYYY-MM-DD HH24:MI:SS' описывает используемый при запросах формат. Актуальный запрос будет выглядеть так:

\(Datefield \space = \space TO_DATE('2003-01-08 \space 14:35:00','YYYY-MM-DD \space HH24:MI:SS')\)

Вы можете использовать более короткую версию:

\(TO_DATE('2003-11-18','YYYY-MM-DD')\)

Опять же, это не вернёт записи, где время не является нулевым.

SQL server

\(Datefield \space = \space 'yyyy-mm-dd \space hh:mm:ss'\)

Часть запроса hh:mm:ss может быть опущена, когда в записях не установлено время.

Альтернативный формат следующий:

\(Datefield \space = \space 'mm/dd/yyyy'\)

IBM DB2

\(Datefield \space = \space TO_DATE('yyyy-mm-dd \space hh:mm:ss','YYYY-MM-DD \space HH24:MI:SS')\)

Часть запроса hh:mm:ss не может быть опущена, даже если время равно 00:00:00.

PostgreSQL

\[ \begin{align*} Datefield \space = \space TIMESTAMP \space 'YYYY-MM-DD \space HH24:MI:SS' \Datefield \space = \space TIMESTAMP \space 'YYYY-MM-DD' \end{align*} \]

Вы должны указать полностью временную метку при использовании запросов типа "равно", в противном случае не будет возвращено никаких записей. Вы можете успешно делать запросы со следующими выражениями, если запрашиваемая таблица содержит записи дат с точными временными метками (2007-05-29 00:00:00 или 2007-05-29 12:14:25):

\(select \space * \space from \space table \space where \space date \space = \space '2007-05-29 \space 00:00:00';\)

или

\(select \space * \space from \space table \space where \space date \space = \space '2007-05-29 \space 12:14:25';\)

При использовании других операторов, таких как больше, меньше, больше или равно, или меньше или равно, вам не нужно указывать время, но это можно сделать для повышения точности. Оба эти выражения сработают:

\(select \space * \space from \space table \space where \space date \space < \space '2007-05-29';\)

\(select \space * \space from \space table \space where \space date \space < \space '2007-05-29 \space 12:14:25';\)

Файловые базы геоданных, шейп-файлы, покрытия и прочие файловые источники данных

Даты в файловых геобазах данных, шейп-файлах и покрытиях предваряются ключевым словом date.

\(Datefield \space = \space date \space 'yyyy-mm-dd'\)

Файловые базы геоданных поддерживают использование времени в поле даты, поэтому его можно добавить в выражение:

\(Datefield \space = \space date \space 'yyyy-mm-dd \space hh:mm:ss'\)

Шейп-файлы и покрытия не поддерживают использование времени в поле даты.

Примечание:

SQL, используемый в файловой базе геоданных, базируется на стандарте SQL-92.

Известные ограничения

Построение запросов к датам, находящимся в левой части (первой таблице) соединения, работает только для файловых источников данных, таких как файловые базы геоданных, шейп-файлы и таблицы DBF. Но возможен обходной путь при работе с другими, не файловыми, источниками, такими как многопользовательские данные, как описано ниже.

Запрос к датам левой части соединения будет выполнен успешно, если использовать ограниченную версию SQL, разработанную для файловых источников данных. Если вы не используете такой источник данных, можете перевести выражение для использования этого формата. Это можно сделать, убедившись, что выражение запроса включает поля более чем из одной присоединённой таблицы. Например, если соединены класс пространственных объектов и таблица (FC1 и Table1), и они поступают из многопользовательской базы геоданных, следующее выражение не будет выполнено или не вернет данные:

\[ \begin{align*} FC1.date \space = \space date \space #01/12/2001# \FC1.date \space = \space date \space '01/12/2001' \end{align*} \]

Чтобы запрос был выполнен успешно, можно создать вот такой запрос:

\(FC1.date \space = \space date \space '01/12/2001' \space and \space Table1.OBJECTID \space > \space 0\)

Так как запрос включает поля из обеих таблиц, будет использована ограниченная версия SQL. В этом выражении Table1.OBJECTID всегда > 0 для записей, которые сопоставлены в процессе создания соединения, поэтому это выражение всегда верно для всех строк, содержащих сопоставления соединения.

Чтобы быть уверенным, что каждая запись с FC1.date = date '01/12/2001' выбрана, используйте следующий запрос:

\(FC1.date \space = \space date \space '01/12/2001' \space and \space (Table1.OBJECTID \space IS \space NOT \space NULL \space OR \space Table1.OBJECTID \space IS \space NULL)\)

Такой запрос будет выбирать все записи с FC1.date = date '01/12/2001', независимо от того, есть ли сопоставление при соединении для каждой отдельной записи.

Комбинированные выражения

Составные запросы могут комбинироваться путем соединения выражений операторами AND (И) и OR (ИЛИ). Вот пример запроса для выборки всех домов с общей площадью более 1500 квадратных футов и гаражом более чем на три машины:

\(AREA \space > \space 1500 \space AND \space GARAGE \space > \space 3\)

Когда вы используете оператор OR (ИЛИ), по крайней мере одно из двух разделенных оператором выражений, должно быть верно для выбираемой записи, например:

\(RAINFALL \space < \space 20 \space OR \space SLOPE \space > \space 35\)

Используйте оператор NOT (НЕ) в начале выражения, чтобы найти объекты или записи, не соответствующие условию выражения, например:

\(NOT \space STATE_NAME \space = \space 'Colorado'\)

Оператор NOT можно комбинировать с AND и OR. Вот пример запроса, выбирающего все штаты Новой Англии за исключением штата Maine:

\(SUB_REGION \space = \space 'New \space England' \space AND \space NOT \space STATE_NAME \space = \space 'Maine'\)

Вычисления

Вычисления можно включить в запросы с помощью математических операторов +, –, * и /. Можно использовать вычисление между полем и числом, например:

\(AREA \space >= \space PERIMETER \space * \space 100\)

Вычисления также могут производиться между полями. Например, чтобы найти страны с плотностью населения менее или равной 25 человек на квадратную милю, можно использовать такое выражение:

\(POP1990 \space / \space AREA \space <= \space 25\)

Приоритет операторов

Выражения выполняются в последовательности, определяемой стандартными правилами. Например, заключённая в круглые скобки часть выражения выполняется раньше, чем часть выражения за скобками.

\(HOUSEHOLDS \space > \space MALES \space * \space (POP90_SQMI \space + \space AREA)\)

Вы можете добавить скобки в режиме Редактирование SQL вручную, или использовать команды Группировать и Разгруппировать в режиме Условие, чтобы добавить или удалить их.

Подзапросы

Подзапрос – это запрос, вложенный в другой запрос и поддерживаемый только в базах геоданных. Подзапросы могут использоваться в SQL-выражении для применения предикативных или агрегирующих функций, или для сравнения данных со значениями, хранящимися в другой таблице и т.п. Это может быть сделано с помощью ключевых слов IN или ANY. Например этот запрос выберет только те страны, которых нет в таблице indep_countries:

\(COUNTRY_NAME \space NOT \space IN \space (SELECT \space COUNTRY_NAME \space FROM \space indep_countries)\)

Примечание:

Покрытия, шейп-файлы и прочие файловые источники данных, не относящиеся к базам геоданных, не поддерживают подзапросы. Подзапросы, выполняемые на версионных многопользовательских классах объектов и таблицах, не возвращают объекты, которые хранятся в дельта-таблицах. Файловые базы геоданных имеют ограниченную поддержку подзапросов, описанных в данном разделе, в то время, как многопользовательские базы геоданных поддерживают их полностью. Информацию обо всех возможностях подзапросов к многопользовательским базам геоданных смотрите в документации по своей СУБД.

Этот запрос возвратит объекты, где GDP2006 больше, чем GDP2005 любых объектов, содержащихся в странах:

\("GDP2006" \space > \space (SELECT \space MAX("GDP2005") \space FROM \space countries)\)

Поддержка подзапросов в файловых базах геоданных ограничена следующим:

  • Скалярные подзапросы с операторами сравнения. Скалярный подзапрос возвращает одно значение, например:

    \("GDP2006" \space > \space (SELECT \space MAX("GDP2005") \space FROM \space countries)\)

    Для файловых баз геоданных, набор функций AVG, COUNT, MIN, MAX и SUM может использоваться лишь в скалярных подзапросах.

  • Предикат EXISTS, например:

    \(EXISTS \space (SELECT \space * \space FROM \space indep_countries \space WHERE \space "COUNTRY_NAME" \space = \space 'Mexico')\)

Операторы

Ниже приведен полный список операторов, поддерживаемых файловыми базами геоданных, шейп-файлами, покрытиями и прочими файловыми источниками данных. Они также поддерживаются в многопользовательских базах геоданных, хотя для этих источников данных может требоваться иной синтаксис. Кроме нижеперечисленных операторов, многопользовательские базы геоданных поддерживают дополнительные возможности. Ознакомьтесь с документацией вашей системы управления базами данных для подробностей.

Арифметические операторы

Для сложения, вычитания, умножения и деления числовых значений можно использовать арифметические операторы.

Оператор

Описание

*

Арифметический оператор умножения

/

Арифметический оператор деления

+

Арифметический оператор сложения

Арифметический оператор вычитания

Арифметические операторы

Операторы сравнения

Операторы сравнения используются для сравнения одного выражения с другим.

Оператор

Описание

<

Меньше. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<=

Меньше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

<>

Не равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>

Больше. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

>=

Больше или равно. Может использоваться со строками (сравнение основывается на алфавитном порядке) и для числовых вычислений, а также дат.

[NOT] BETWEEN x AND y

Выбирает записи, если они содержат значение больше или равное x, но меньше или равное y. Если в начале указано NOT, выбирает запись, содержащую значение вне указанного диапазона. Например это выражение выбирает все записи со значениями, которые больше или равны 1 и меньше или равны 10:

\("OBJECTID" \space BETWEEN \space 1 \space AND \space 10\)

Вот эквивалент этого выражения:

\("OBJECTID" \space >= \space 1 \space AND \space OBJECTID \space <= \space 10\)

Однако, выражение с оператором BETWEEN обрабатывается быстрее, если у вас поле проиндексировано.

[NOT] EXISTS

Возвращает TRUE (истинно), если подзапрос возвращает хотя бы одну запись; в противном случае возвращает FALSE (ложно). Например, данное выражение вернет TRUE, если поле OJBECTID содержит значение 50:

\(EXISTS \space (SELECT \space * \space FROM \space parcels \space WHERE \space "OBJECTID" \space = \space 50)\)

EXISTS поддерживается только в файловых и многопользовательских базах геоданных.

[NOT] IN

Выбирает запись, если она содержит одну из нескольких строк или значений в поле. Если впереди стоит NOT, выбирает запись, где нет таких строк или значений. Например, это выражение будет искать четыре разных названия штатов:

\("STATE_NAME" \space IN \space ('Alabama', \space 'Alaska', \space 'California', \space 'Florida')\)

IS [NOT] NULL

Выбирает запись, если там в определенном поле есть нулевое значение. Если перед NULL стоит NOT, выбирает запись, где в определенном поле есть какое-то значение.

x [NOT] LIKE y [ESCAPE 'escape-character']

Используйте оператор LIKE (вместо оператора = ) с групповыми символами, если хотите построить запрос по части строки. Символ процента (%) означает, что на этом месте может быть что угодно – один символ или сотня, или ни одного. Альтернативно, если вам нужен поиск с символом подстановки, представляющим ровно один символ, используйте знак подчёркивания (_). Если вам нужен доступ к несимвольным данным, используйте функцию CAST. Например, этот запрос возвращает числа, начинающиеся на 8, из целочисленного поля SCORE_INT:

\(CAST \space ("SCORE_INT" \space AS \space VARCHAR) \space LIKE \space '8%'\)

Для включения символа (%) или (_) в вашу строку поиска, используйте ключевое слово ESCAPE для указания другого символа вместо escape, который в свою очередь обозначает настоящий знак процента или подчёркивания. Например данное выражение возвращает все строки, содержащие 10%, такие как 10% DISCOUNT или A10%:

\("AMOUNT" \space LIKE \space '%10\)%%' \space ESCAPE \space '\('\)

Операторы сравнения

Логические операторы

Оператор

Описание

И

Соединяет два условия и выбирает запись, в которой оба условия являются истинными. Например, выполнение следующего запроса выберет все дома с площадью более 1 500 квадратных футов и гаражом на две и более машины:

\("AREA" \space > \space 1500 \space AND \space "GARAGE" \space > \space 2\)

ИЛИ

Соединяет два условия и выбирает запись, где истинно хотя бы одно условие. Например выполнение следующего запроса выберет все дома с площадью более 1,500 квадратных футов или гаражом на две и более машины:

\("AREA" \space > \space 1500 \space OR \space "GARAGE" \space > \space 2\)

НЕ

Выбирает записи, не соответствующие указанному выражению. Например это выражение выберет все штаты, кроме Калифорнии (California):

\(NOT \space "STATE_NAME" \space = \space 'California'\)

Логические операторы

Операторы строковой операции

Оператор

Описание

||

Возвращает символьную строку, являющуюся результатом конкатенации двух или более строковых выражений.

\(FIRST_NAME \space || \space MIDDLE_NAME \space || \space LAST_NAME\)

Функции

Ниже приведен полный список функций, поддерживаемых файловыми базами геоданных, шейп-файлами, покрытиями и прочими файловыми источниками данных. Функции также поддерживаются в многопользовательских базах геоданных, хотя в этих источниках данных может использоваться иной синтаксис или имена функций. Кроме нижеперечисленных функций, многопользовательские базы геоданных поддерживают дополнительные возможности. Ознакомьтесь с документацией вашей системы управления базами данных для подробностей.

Функции дат

Функция

Описание

CURRENT_DATE

Возвращает текущую дату.

EXTRACT (extract_field FROM extract_source)

Возвращает фрагмент extract_field из extract_source. Аргумент extract_source является выражением дата–время. Аргументом extract_field может быть одно из следующих ключевых слов: YEAR, MONTH, DAY, HOUR, MINUTE или SECOND.

CURRENT TIME

Возвращает текущую дату.

Функции дат

Строковые функции

Аргументы, обозначаемые string_exp, могут быть названием столбца, строковой константой или результатом другой скалярной функции, где исходные данные могут быть представлены в виде символов.

Аргументы, обозначаемые character_exp, являются строками символов переменной длины.

Аргументы, указанные как start или length могут быть числовыми постоянными или результатами других скалярных функций, где исходные данные представлены числовым типом.

Строковые функции, перечисленные здесь, базируются на 1; то есть, первым символом в строке является символ 1.

Функция

Описание

CHAR_LENGTH (string_exp)

Возвращает длину строкового выражения в символах.

LOWER (string_exp)

Возвращает строку, идентичную string_exp, в которой все символы верхнего регистра изменены на символы нижнего регистра.

POSITION (character_exp IN character_exp)

Возвращает место первого символьного выражения во втором символьном выражении. Результат – число с точностью, определяемой реализацией и коэффициентом кратности 0.

SUBSTRING (string_exp FROM start FOR length)

Возвращает символьную строку, извлекаемую из string_exp, начинающуюся с символа, номер которого определяется аргументом start, а длина строки составляет столько символов, сколько указано в аргументе length.

TRIM (BOTH | LEADING | TRAILING trim_character FROM string_exp)

Возвращает строку string_exp укороченную на количество символов, указанное в аргументе trim_character, с начала, с конца или с обоих концов строки.

UPPER (string_exp)

Возвращает строку, идентичную string_exp, в которой все символы нижнего регистра изменены на символы верхнего регистра.

Строковые функции

Числовые функции

Все числовые функции возвращают числовые значения.

Аргументы, обозначенные numeric_exp, float_exp или integer_exp могут быть именем столбца, результатом другой скалярной функции или числовой константой, где исходные данные могут быть представлены числовым типом.

Функция

Описание

ABS (numeric_exp)

Возвращает абсолютное значение numeric_exp.

ACOS (float_exp)

Возвращает угол в радианах, равный арккосинусу float_exp.

ASIN (float_exp)

Возвращает угол в радианах, равный арксинусу float_exp.

ATAN (float_exp)

Возвращает угол в радианах, равный арктангенсу float_exp.

CEILING (numeric_exp)

Возвращает наименьшее целое значение, большее или равное numeric_exp.

COS (float_exp)

Возвращает косинус float_exp, где float_exp как угол, выраженный в радианах.

FLOOR (numeric_exp)

Возвращает наибольшее целое значение, меньшее или равное numeric_exp.

LOG (float_exp)

Возвращает натуральный логарифм float_exp.

LOG10 (float_exp)

Возвращает логарифм по основанию 10 float_exp.

MOD (integer_exp1, integer_exp2)

Возвращает остаток от деления integer_exp1 на integer_exp2.

POWER (numeric_exp, integer_exp)

Возвращает значение numeric_exp степени integer_exp.

ROUND (numeric_exp, integer_exp)

Возвращает numeric_exp, округленное до integer_exp знаков справа от десятичной точки. Если integer_exp отрицательное, numeric_exp округляется до |integer_exp| знаков слева от десятичной запятой.

SIGN (numeric_exp)

Возвращает указатель знака numeric_exp. Если numeric_exp меньше нуля, возвращается –1. Если numeric_exp равно нулю, возвращается 0. Если numeric_exp больше нуля, возвращается 1.

SIN (float_exp)

Возвращает синус float_exp, где float_exp – угол в радианах.

TAN (float_exp)

Возвращает тангенс float_exp, где float_exp – угол в радианах.

TRUNCATE (numeric_exp, integer_exp)

Возвращает numeric_exp, усеченное до integer_exp знаков справа от десятичной запятой. Если integer_exp является отрицательным, numeric_exp сокращается до |integer_exp| знаков слева от десятичной запятой.

Числовые функции

Функция CAST

Функция CAST конвертирует значение в определенный тип данных. Синтаксис выглядит так:

CAST (exp AS data_type)

Аргумент exp может быть названием столбца, результатом другой скалярной функции или символом. Data_type может быть любым из следующих ключевых слов, и задается строчными или заглавными буквами: CHAR, VARCHAR, INTEGER, SMALLINT, REAL, DOUBLE, DATE, TIME, DATETIME, NUMERIC или DECIMAL.