Jurijus Zaksas
Искусственный Интеллект
(445813)
4 года назад
Вношу ясность.
Во многих языках скобки используются для передачи параметров функциям.
Во многих языках скобки отличают методы от свойств.
Во многих языках скобки используются для задания множеств.
Но не в SQL.
Там - полная лажа с этим делом. И бардак.
Например, в твоем примере now - это чистая функция. И скобки могли бы быть абсолютно к месту.
А вот EXISTS - это уже оператор, как ни крути. И он мог бы вполне работать без скобок. Но не работает. Потому что он часть условия и без скобок неясно, где он заканчивается и продолжается исходное условие.
Оракловский синтаксис допускает вызов функций, у которых нет обязательных параметров, без скобок.
Поэтому синтаксис каждой СУБД надо изучать, знать и соблюдать.
А еще бывают статистические, групповые и прочие экзотические функции. Как тебе конструкция:
SELECT FIELD1, LISTAGG(FIELD2, ' ') WITHIN GROUP (ORDER BY FIELD3) FROM SOMETABLE GROUP BY FIELD1 ORDER BY 2
И поди пойми, где здесь функции, где операторы и как это счастье вообще работает.
SELECT database(), now(), user()
EXISTS ()
UNIQUE ()