Синтаксическая ошибка «создать функцию» при использовании «max» - PullRequest
0 голосов
/ 28 февраля 2012

Я не могу понять, что вызывает синтаксическую ошибку в пользовательской функции.

Это работает:

CREATE FUNCTION func(x INT)
RETURNS INT DETERMINISTIC
RETURN x + 1

SELECT func(10) выбирает 11.

Тем не менее следующее (во время создания):

CREATE FUNCTION func(x INT)
RETURNS INT DETERMINISTIC
RETURN MAX(x, 1)

Он жалуется на 1) в строке 3 (ошибка 1064).

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

Что не так в синтаксисе ошибочной функции?

1 Ответ

3 голосов
/ 28 февраля 2012

Функция, используемая для определения наибольшего из ее аргументов, называется GREATEST() - не MAX(). Последняя функция group-by , которую я тоже часто ошибочно использую первой ...

Вкратце: GREATEST() используется для определения максимального значения из списка его аргументов, тогда как MAX() используется для поиска максимального значения (столбца) из набора результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...