Язык запросов Google Visualization API позволяет выполнять различные манипуляции с данными с запросом к источнику данных.
Оглавление
Введение
Как правило, визуализации ожидают данные в определенной форме. Например, круговая диаграмма может ожидать данных в виде двух столбцов: текстовой метки и числового значения. Данные в источнике данных могут не точно соответствовать этой структуре. Например, источник данных может иметь более двух столбцов, или порядок столбцов может не соответствовать порядку, ожидаемому на круговой диаграмме.
Язык запросов позволяет отправлять запросы на манипулирование данными и форматирование в источник данных, а также обеспечивать соответствие возвращаемой структуры данных и содержимого ожидаемой структуре.
Синтаксис языка запросов аналогичен SQL. Разработчики, знакомые с SQL, должны быть в состоянии быстро изучить и использовать этот язык запросов. В Интернете доступно множество учебных пособий по SQL . Существуют некоторые различия между этим языком запросов и SQL, которые описаны в разделе о синтаксисе .
Обратите внимание, что источники данных не требуются для реализации языка запросов, а если и требуются, то для реализации всех функций языка. Если у вас нет оснований полагать иначе, вы не должны полагаться на источник данных для реализации всех функций этого языка.
Использование языка запросов
Вы можете прикрепить строку запроса к запросу источника данных двумя способами: задав строку запроса из кода JavaScript или задав строку запроса в качестве параметра в URL-адресе источника данных . Если ваш запрос не включает строку запроса, поведение источника данных по умолчанию заключается в возврате всех строк и столбцов с использованием стандартного порядка строк и столбцов и форматирования. Вы можете изменить это, включив строку запроса в свой запрос к источнику данных.
Настройка запроса из JavaScript
Чтобы задать строку запроса из кода JavaScript, вызовите метод setQuery
класса google.visualization.Query
.
var query = new google.visualization.Query(DATA_SOURCE_URL); query.setQuery('select dept, sum(salary) group by dept'); query.send(handleQueryResponse);
Настройка запроса в URL-адресе источника данных
Строку запроса можно добавить к URL-адресу источника данных с помощью параметра tq
. Установка запроса в параметре URL вместо JavaScript позволяет легко использовать визуализации, написанные другими разработчиками, и по-прежнему иметь возможность настраивать запрос.
Строка запроса должна быть правильно закодирована как параметр URL. Вы можете закодировать URL-адрес, используя функцию JavaScript encodeURIComponent
, или вы можете закодировать его вручную, используя инструмент кодирования в конце этого раздела.
Пример:
Рассмотрим следующую строку запроса для электронной таблицы Google. (Обратите внимание, что идентификаторы столбцов в электронных таблицах всегда представляют собой буквы; текст заголовков столбцов, отображаемый в опубликованной электронной таблице, является метками, а не идентификаторами. В строке запроса необходимо использовать идентификатор, а не метку.)
select A, sum(B) group by A
При кодировании этот запрос становится:
select%20A%2C%20sum(B)%20group%20by%20A
Предположим, что это URL-адрес вашей электронной таблицы:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4
Добавьте /gviz/tq?tq=
YOUR_QUERY_STRING к URL электронной таблицы, чтобы получить окончательную строку запроса:
https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A
Используйте приведенный ниже инструмент для кодирования или декодирования строки запроса:
Примечание. Для доступа к данным частной электронной таблицы требуется передача явных учетных данных авторизации с использованием OAuth. Дополнительную информацию см. в разделе Таблицы Google: авторизация .
Синтаксис языка
Обзор
Синтаксис языка запросов API визуализации Google похож на синтаксис SQL. Однако это подмножество SQL с некоторыми собственными функциями, которые вам необходимо изучить. Если вы знакомы с SQL, его изучение не должно составить особого труда.
Таблицы данных
В этом документе термин таблица данных используется для обозначения набора результатов запроса. Таблица данных состоит из строк и столбцов. Каждый столбец в таблице данных имеет следующие свойства:
- Идентификатор (или идентификатор столбца ). Используется для ссылки на столбцы в запросе. Обратите внимание, что вы никогда не должны пытаться ссылаться на столбец по метке в запросе, только по идентификатору. Совет. Старайтесь не использовать идентификаторы, содержащие пробелы; пространствами трудно управлять, и это может привести к тому, что вы сделаете небольшие, но трудно находимые ошибки в своем коде. Кроме того, идентификатор, содержащий пробелы, должен быть заключен в обратные кавычки.
- Этикетка .
string
, которая обычно отображается для конечных пользователей. Например, как легенда в круговой диаграмме или заголовок столбца в таблице. - Тип данных . Поддерживаемые типы данных:
string
,number
,boolean
,date
,datetime
-время и времяtimeofday
. Все значения столбца будут иметь тип данных, соответствующий типу столбца, илиnull
значение. Эти типы похожи, но не идентичны типам JavaScript. описано в разделе Литералы на этой странице. - Шаблон форматирования . Источник данных может определять шаблоны форматирования для некоторых или всех своих столбцов. Вы можете переопределить этот шаблон, включив предложение формата .
Таблица, используемая во всех примерах:
В этом разделе все примеры запросов относятся к следующей таблице. Заголовки столбцов являются идентификаторами столбцов.
namestring |
deptstring |
lunchTimetimeofday |
salary number |
hireDatedate |
agenumber |
isSeniorboolean |
seniorityStartTimedatetime |
---|---|---|---|---|---|---|---|
John | Eng | 12:00:00 | 1000 | 2005-03-19 | 35 | true | 2007-12-02 15:56:00 |
Dave | Eng | 12:00:00 | 500 | 2006-04-19 | 27 | false | null |
Sally | Eng | 13:00:00 | 600 | 2005-10-10 | 30 | false | null |
Ben | Sales | 12:00:00 | 400 | 2002-10-10 | 32 | true | 2005-03-09 12:30:00 |
Dana | Sales | 12:00:00 | 350 | 2004-09-08 | 25 | false | null |
Mike | Marketing | 13:00:00 | 800 | 2005-01-10 | 24 | true | 2007-12-30 14:40:00 |
Языковые пункты
Синтаксис языка запросов состоит из следующих предложений. Каждое предложение начинается с одного или двух ключевых слов. Все пункты необязательны. Предложения разделяются пробелами. Порядок предложений должен быть следующим:
Пункт | Применение |
---|---|
select | Выбирает, какие столбцы возвращать и в каком порядке. Если этот параметр опущен, возвращаются все столбцы таблицы в порядке по умолчанию. |
where | Возвращает только строки, соответствующие условию. Если опущено, возвращаются все строки. |
group by | Агрегирует значения по строкам. |
pivot | Преобразует отдельные значения в столбцах в новые столбцы. |
order by | Сортирует строки по значениям в столбцах. |
limit | Ограничивает количество возвращаемых строк. |
offset | Пропускает заданное количество первых строк. |
label | Устанавливает метки столбцов. |
format | Форматирует значения в определенных столбцах, используя заданные шаблоны форматирования. |
options | Устанавливает дополнительные параметры. |
from | Предложение from было удалено из языка. |
Выбирать
Предложение select
используется для указания возвращаемых столбцов и их порядка. Если это предложение не указано или если используется select *
, возвращаются все столбцы таблицы источника данных в их исходном порядке. На столбцы ссылаются идентификаторы (а не метки). Например, в электронной таблице Google идентификаторы столбцов представляют собой одно- или двухсимвольную букву столбца (A, B, C, ...).
Элементами в предложении select
могут быть идентификаторы столбцов или выходные данные функций агрегирования , скалярных функций или операторов .
Примеры:
select *
select dept, salary
select max(salary)
В следующем примере обратные кавычки используются для ссылки на идентификаторы столбцов, которые содержат пробелы (адрес электронной почты) или зарезервированные слова (дата):
select `email address`, name, `date`
Выполнение следующего запроса к таблице примера :
select lunchTime, name
Возвращает следующий ответ:
lunchTime | name |
---|---|
12:00:00 | John |
12:00:00 | Dave |
13:00:00 | Sally |
12:00:00 | Ben |
12:00:00 | Dana |
13:00:00 | Mike |
Где
Предложение where
используется для возврата только тех строк, которые соответствуют указанному условию.
Простые операторы сравнения: <=, <, >, >=, =, !=, <>
. Оба оператора сравнения != <>
означают не равно. Строки сравниваются по лексикографическому значению. Обратите внимание, что равенство обозначается =
, а не ==
, как в большинстве компьютерных языков. Сравнение с null
выполняется с помощью is null
или is not null
.
Вы можете объединить несколько условий, используя логические операторы and
, or
, и not
. Скобки можно использовать для явного определения приоритета.
Предложение where также поддерживает некоторые более сложные операторы сравнения строк. Эти операторы принимают две строки в качестве аргументов; любые нестроковые аргументы (например, даты или числа) перед сравнением будут преобразованы в строки. Сопоставление строк чувствительно к регистру (вы можете использовать скалярные функции upper()
или lower()
, чтобы обойти это).
-
contains
- совпадение подстроки. целоеcontains
часть верно, если часть находится где-нибудь внутри целого . Пример:where name contains 'John'
соответствует «Джон», «Джон Адамс», «Долговязый Джон Сильвер», но не «Джон Адамс». -
starts with
- совпадение префикса. значениеstarts with
префикса , истинно, если префикс стоит в начале значения . Примеры:where dept starts with 'engineering'
соответствует «инженерный» и «инженерный менеджеры».where dept starts with 'e'
соответствует «engineering», «eng» и «e». -
ends with
- совпадение суффикса. значениеends with
суффиксом , истинно, если суффикс находится в конце значения . Пример:where role ends with 'y'
соответствует «ковбою», «мальчику» и «у». -
matches
- совпадение (preg) с регулярным выражением. haystackmatches
игле истинно, если регулярное выражение в игле соответствует стогу сена . Примеры:where country matches '.*ia'
соответствует Индии и Нигерии, но не Индиане. Обратите внимание, что это не глобальный поиск, поэтомуwhere country matches 'an'
, это не будет соответствовать 'Канада'. -
like
— текстовый поиск, который поддерживает два подстановочных знака: %, который соответствует нулю или более символов любого типа, и _ (подчеркивание), который соответствует любому одному символу. Это похоже на оператор SQL LIKE. Пример:where name like fre%
соответствует «fre», «fred» и «freddy».
Примеры:
where salary >= 600 where dept != 'Eng' and date '2005-01-21' < hireDate where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null
Выполнение следующего запроса к таблице примера :
select name where salary > 700
Возвращает следующий ответ:
name |
---|
John |
Mike |
Группа по
Предложение group by
используется для агрегирования значений по строкам. Для каждой отдельной комбинации значений в предложении group-by создается одна строка. Данные автоматически сортируются по столбцам группировки, если иное не указано в предложении order by
.
Примечание. Если вы используете предложение group by
, то каждый столбец , указанный в предложении select
, должен быть либо указан в предложении group by
, либо обернут функцией агрегирования .
Примеры:
select dept, max(salary) group by dept
Выполнение следующего запроса к таблице примера :
select lunchTime, avg(salary), count(age) group by isSenior,lunchTime
Возвращает следующий ответ:
lunchTime | avg-salary | count-age |
---|---|---|
12:00:00 | 425 | 2 |
13:00:00 | 600 | 1 |
12:00:00 | 700 | 2 |
13:00:00 | 800 | 1 |
Вращаться
Предложение pivot
используется для преобразования различных значений в столбцах в новые столбцы. Например, сводка по столбцу «год» создаст таблицу со столбцом для каждого отдельного года, который появляется в исходной таблице. Это может быть полезно, если, например, визуализация линейной диаграммы рисует каждый столбец как отдельную линию. Если вы хотите нарисовать отдельную строку для каждого года, а «год» — это один из столбцов исходной таблицы, то хорошим вариантом будет использование операции поворота для выполнения необходимого преобразования данных.
Примечание. Если вы используете pivot
предложение, то каждый столбец , указанный в предложении select
, должен быть либо указан в предложении group by
, либо обернут функцией агрегирования .
Поскольку несколько строк могут содержать одни и те же значения для столбцов сводки, сводка подразумевает агрегирование. Обратите внимание, что при использовании pivot
без использования group by
результирующая таблица будет содержать ровно одну строку. Например, выполнив следующий запрос к таблице примера :
select sum(salary) pivot dept
Возвращает следующий ответ:
Eng sum-salary | Marketing sum-salary | Sales sum-salary |
---|---|---|
2100 | 800 | 750 |
Это потому, что 2100 — это сумма зарплат инженерного отдела, 800 — отдела маркетинга и т. д.
Использование pivot
вместе с group by
может быть еще более полезным, так как создается таблица, в которой каждая ячейка содержит результат агрегирования для соответствующей строки и соответствующего столбца. Например, выполнив следующий запрос к таблице примеров :
select dept, sum(salary) group by dept pivot lunchTime
Возвращает следующий ответ:
dept | 12:00:00 sum-salary | 13:00:00 sum-salary |
---|---|---|
Eng | 1500 | 600 |
Marketing | null | 800 |
Sales | 750 | null |
Вы также можете «инвертировать» эту таблицу, переключая столбцы и строки, переключаясь между pivot
столбцами и group by
столбцам. Выполнение следующего запроса к таблице примера :
select lunchTime, sum(salary) group by lunchTime pivot dept
Возвращает следующий ответ:
lunchTime | Eng sum-salary | Marketing sum-salary | Sales sum-salary |
---|---|---|---|
12:00:00 | 1500 | null | 750 |
13:00:00 | 600 | 800 | null |
Вы также можете использовать более одного столбца в предложении pivot
. В таком случае столбцы таблицы ответов состоят из всех уникальных комбинаций значений в столбцах, существующих в исходной таблице. Например, выполнив следующий запрос к таблице примера :
select sum(salary) pivot dept, lunchTime
Возвращает следующий ответ:
Eng,12:00:00 sum-salary | Eng,13:00:00 sum-salary | Marketing,13:00:00 sum-salary | Sales,12:00:00 sum-salary |
---|---|---|---|
1500 | 600 | 800 | 750 |
Обратите внимание, что только комбинации, которые появляются в исходной таблице, получают столбцы в таблице ответов. Вот почему нет столбца «Маркетинг, 12:00:00» или «Продажи, 13:00:00».
Также возможно использование более чем одной агрегации. Например, выполнив следующий запрос к таблице примера :
select sum(salary), max(lunchTime) pivot dept
Возвращает следующий ответ:
Eng sum-salary | Marketing sum-salary | Sales sum-salary | Eng max-lunchTime | Marketing max-lunchTime | Sales max-lunchTime |
---|---|---|---|---|---|
2100 | 800 | 750 | 13:00:00 | 13:00:00 | 12:00:00 |
Вы можете комбинировать несколько агрегаций в предложении select
, несколько столбцов в предложении group by
и несколько столбцов в предложении pivot
. Внутри агрегация выполняется конкатенацией столбцов в предложениях group by и pivot.
Столбцы, указанные в предложении pivot
, могут не отображаться в предложениях select
, group by
или order by
. Когда используется pivot
, предложение order by
не может содержать столбцы агрегации. Причина этого в том, что для каждой агрегации, указанной в предложении select
, в таблице результатов создается много столбцов. Однако вы можете форматировать столбцы агрегации при использовании pivot
. Результатом такого форматирования является то, что все новые столбцы, относящиеся к конкретной агрегации, которые создаются операцией сводки, форматируются по указанному шаблону. В приведенном выше примере добавление format sum(salary) "some_format_string"
повлияет на следующие столбцы: Eng sum-salary, Marketing sum-salary и Sales sum-salary.
Вы можете пометить столбцы агрегации. Если в предложении метки не указана label
, метка столбца, созданного в результате поворота, состоит из списка значений в столбцах сводки, типа агрегирования (минимум, максимум, сумма, ...) и метка агрегированного столбца. Например "Eng,12:00:00 сум Зарплата". Если в предложении select
была указана только одна агрегация, то часть агрегации удаляется из метки, и сохраняется только список значений в сводных столбцах. Например, «Англ, 12:00:00». Когда в предложении label
указана метка для столбца агрегации, запрошенная метка добавляется к списку значений как в случае, когда в предложении select
присутствует только одна агрегация, так и в случае, когда их несколько. Например, label sum(salary) "sumsal"
приведет к меткам столбцов "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal" и т. д.
Сортировать по
Предложение order by
используется для сортировки строк по значениям в указанных столбцах.
Элементы в предложении order by
могут быть идентификаторами столбцов или выходными данными функций агрегирования , скалярных функций или операторов .
Примеры:
order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)
Ограничение
Предложение limit
используется для ограничения количества возвращаемых строк.
Пример:
limit 100
Компенсировать
Предложение offset
используется для пропуска заданного количества первых строк. Если используется предложение limit
, сначала применяется offset
: например, limit 15 offset 30
возвращает строки с 31 по 45.
Примеры:
offset 10 limit 30 offset 210
Этикетка
Предложение label
используется для установки метки для одного или нескольких столбцов. Обратите внимание, что вы не можете использовать значение метки вместо идентификатора в запросе.
Элементы в предложении label
могут быть идентификаторами столбцов или выходными данными функций агрегации , скалярных функций или операторов .
Синтаксис:
label column_id label_string [,column_id label_string]
-
column_id
- Идентификатор столбца , которому назначается метка.
-
label_string
- Метка, назначаемая этому столбцу. Во многих визуализациях метка столбца используется как текст для отображения конечному пользователю, например метка легенды на круговой диаграмме. Метки являются строковыми литералами и следуют этим правилам синтаксиса.
Пример:
В следующем примере метка для столбца отдела задается как «Отдел», метка для столбца имени — как «Имя сотрудника», а метка для столбца местоположения — как «Местоположение сотрудника».
label dept 'Department', name "Employee Name", location 'Employee Location'
Формат
Предложение format
используется для указания форматированного значения для ячеек в одном или нескольких столбцах. Возвращаемые данные должны включать как фактическое значение, так и форматированное значение для каждой ячейки в форматированном столбце. Многие визуализации используют неформатированное значение для вычислений, а форматированное значение — для отображения. Шаблоны, указанные в этом предложении, обычно возвращаются в свойстве шаблона соответствующих столбцов.
Синтаксис шаблона:
-
number
,date
, времяtimeofday
,datetime
и время - Шаблоны даты и числа , определенные ICU .
-
boolean
- Шаблон представляет собой
string
в формате « значение-если-истина : значение-если-ложь ».
Пример:
format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'
Опции
Предложение options
используется для управления дополнительными параметрами выполнения запроса. Возможные ключевые слова, которые могут следовать за предложением options
:
-
no_format
Удаляет отформатированные значения из результата и оставляет только базовые значения. Может использоваться, когда конкретная визуализация не использует форматированные значения для уменьшения размера ответа. -
no_values
Удаляет базовые значения из результата и оставляет только отформатированные значения. Может использоваться, когда конкретная визуализация использует только отформатированные значения, чтобы уменьшить размер ответа.
Функции обработки данных
Существует несколько типов операторов и функций, которые позволяют вам манипулировать или агрегировать данные в одном столбце, а также сравнивать или объединять данные в разных столбцах. Примеры включают sum() (для сложения всех значений в столбце), max (для поиска наибольшего значения в столбце) и + (для сложения значений двух столбцов в одной строке).
Некоторые функции могут появляться в любом предложении; некоторые могут появляться в подмножестве предложений. Это задокументировано ниже.
Пример:
Учитывая эту таблицу... | Если мы применим этот запрос... | Мы получаем этот результат. | ||||||||||||||||||||||||
| select upper(name), year(startDate) |
|
Следующие функции обработки данных определяются языком запросов Google Visualization API:
Функции агрегации
Функциям агрегирования передается один идентификатор столбца, и они выполняют действие для всех значений в каждой группе (группы задаются предложениями group by
или pivot
или всеми строками, если эти предложения не используются).
Примеры:
select max(salary) // Returns a table with one column and one row. select max(salary) group by dept // Returns a table with the max salary for each dept column value. select max(salary) pivot dept // Returns a one-row table with a column for each dept, // and the max salary for that department.
Агрегирующие функции можно использовать в предложениях select
, order by
, label
, format
. Они не могут появляться в предложениях where
, group by
, pivot
, limit
, offset
или options
.
Вот поддерживаемые функции агрегации:
Имя | Описание | Поддерживаемые типы столбцов | Тип возврата |
---|---|---|---|
avg() | Возвращает среднее значение всех значений в столбце для группы. | number | number |
count() | Возвращает количество элементов в указанном столбце для группы. Пустые ячейки не учитываются. | Любой тип | number |
max() | Возвращает максимальное значение в столбце для группы. Даты сравниваются с более ранними по размеру, string сравниваются по алфавиту с учетом регистра. | Любой тип | Тот же тип, что и столбец |
min() | Возвращает минимальное значение в столбце для группы. Даты сравниваются с более ранними по размеру, string сравниваются по алфавиту с учетом регистра. | Любой тип | Тот же тип, что и столбец |
sum() | Возвращает сумму всех значений в столбце для группы. | number | number |
Примечание. Функции агрегации могут принимать в качестве аргумента только идентификатор столбца:
max(startDate) // OK min(firstScore) + min(secondScore) // OK max(year(startDate)) // INVALID. max requires column ID sum(salary + perks) // INVALID. sum requires column ID.
Скалярные функции
Скалярные функции работают с нулем или более параметрами, чтобы получить другое значение. Скалярным функциям можно передать любое выражение, результатом которого является параметр соответствующего типа. Обратите внимание, что эти типы — это типы, определенные в разделе « Литералы » этого документа, которые могут немного отличаться от объектов JavaScript с аналогичными именами.
Обратите внимание, что имя столбца будет изменено путем переноса его на скалярную функцию.
Скалярные функции могут принимать в качестве параметра все, что оценивается как одно значение:
year(max(startDate)) datediff(now(), todate(1234567890000))
Скалярные функции можно использовать в любом из следующих предложений: select
, where
, group by
, pivot
, order by
, label ,
и format
.
Имя | |
---|---|
year() | Возвращает значение года из значения даты или даты и времени. Например: Параметры: один параметр типа date или datetime . Тип возврата: number |
month() | Возвращает отсчитываемое от нуля значение месяца из значения даты или даты и времени. Например: Параметры: один параметр типа date или datetime . Тип возврата: number |
day() | Возвращает день месяца из значения Параметры: один параметр типа date или datetime . Тип возврата: number |
hour() | Возвращает значение часа из значения datetime или Параметры: один параметр типа datetime или timeofday . Тип возврата: number |
minute() | Возвращает значение минуты из значения Параметры: один параметр типа datetime или timeofday . Тип возврата: number |
second() | Возвращает второе значение из значения Параметры: один параметр типа datetime или timeofday . Тип возврата: number |
millisecond() | Возвращает миллисекундную часть значения Параметры: один параметр типа datetime или timeofday . Тип возврата: number |
quarter() | Возвращает квартал из значения Параметры: один параметр типа date или datetime . Тип возврата: number |
dayOfWeek() | Возвращает день недели из значения Параметры: один параметр типа date или datetime . Тип возврата: number |
now() | Возвращает значение даты и времени, представляющее текущую Параметры: Нет Тип возвращаемого значения: datetime |
dateDiff() | Возвращает разницу в днях между двумя значениями Параметры: два параметра типа date или datetime (может быть по одному каждому) Тип возврата: number |
toDate() | Преобразует заданное значение в значение
Параметры: один параметр типа date , datetime или number . Тип возврата: date |
upper() | Возвращает заданную Параметры: один параметр string типа. Тип возвращаемого значения: string |
lower() | Возвращает заданную Параметры: один параметр string типа. Тип возвращаемого значения: string |
Арифметические операторы
Вы можете использовать арифметические операторы для выполнения математических операций над всем, что оценивается как одно число (то есть вывод соответствующих агрегатных функций, операторов или констант).
Примеры:
select empSalary - empTax select 2 * (max(empSalary) / max(empTax))
Определены следующие операторы:
Имя | Описание | Параметры | Тип возврата |
---|---|---|---|
+ | Возвращает сумму двух number значений. | Два number с | number |
- | Возвращает разницу между двумя number значениями. | Два number с | number |
* | Возвращает произведение двух number s. | Два number с | number |
/ | Возвращает частное двух number s. Деление на ноль возвращает ноль. | Два number с | number |
Элементы языка
Литералы
Литералы — это значения, используемые для сравнения или присваивания. Литералы могут быть string
, числами, логическими значениями или различными типами даты/времени. Вот несколько примеров литералов, используемых в синтаксисе запросов:
where startDate < date "2008-03-18" // date "2008-03-18" is a date literal
limit 30 // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!' // '#,##0.00' and 'not yet:of course!' are both string
literals
Вот форматы для каждого типа литерала:
-
string
string
литерал должен быть заключен в одинарные или двойные кавычки. Примеры:"fourteen" 'hello world' "It's raining"
.-
number
- Числовые литералы задаются в десятичной системе счисления. Примеры:
3 3.0 3.14 -71 -7.2 .6
-
boolean
- Булевы литералы либо
true
, либоfalse
. -
date
- Используйте
date
ключевого слова, за которой следуетstring
литерал в форматеyyyy-MM-dd
. Пример:date "2008-03-18"
. -
timeofday
- Используйте ключевое слово
timeofday
, за которым следуетstring
литерал в форматеHH:mm:ss[.SSS]
. Пример:timeofday "12:30:45"
. -
datetime
- Дата и время с использованием либо ключевого слова
datetime
, либо ключевого словаtimestamp
, за которым следуетstring
литерал в форматеyyyy-MM-dd HH:mm:ss[.sss]
. Пример:datetime '2008-03-18 12:30:34.123'
Идентификаторы
Идентификаторы (или идентификаторы) — это текстовые string
, которые идентифицируют столбцы.
Важно: если ваш идентификатор
- Имеет пробелы,
- Зарезервированное слово ,
- Содержит что угодно, кроме буквенно-цифровых символов или символов подчеркивания ([a-zA-Z0-9_]), или
- Начинается с цифры
он должен быть заключен в обратные кавычки (не в одинарные).
В противном случае ваш идентификатор не нужно заключать в кавычки. (Обратите внимание, что не все ключевые слова , определенные синтаксисом, являются зарезервированными словами, поэтому, например, вы можете использовать «max» в качестве идентификатора, не заключая его в кавычки.)
Примеры: col1 employee_table `start date` `7 days traffic` `select`
Мы рекомендуем не выбирать идентификатор, который требует обратных кавычек, потому что можно легко забыть использовать обратные кавычки или случайно использовать «одинарные кавычки» вместо «обратных кавычек». Это распространенные ошибки, и часто их трудно отладить.
Чувствительность к регистру
Идентификаторы и строковые литералы чувствительны к регистру. Все остальные языковые элементы нечувствительны к регистру.
Зарезервированные слова
Следующие зарезервированные слова должны быть заключены в обратные кавычки, если они используются в качестве идентификатора :
and asc by date datetime desc false format group label limit not offset options or order pivot select timeofday timestamp true where