BE-SQL — различия между версиями

Материал из DevelopmenOnTheEdge
Перейти к: навигация, поиск
(Новая страница: «'''BE-SQL''' — диалект SQL, который поддерживается BeanExplorer SQL Parser. Больше всего он похож на PostgreSQL,…»)
(нет различий)

Версия 17:19, 19 ноября 2015

BE-SQL — диалект SQL, который поддерживается BeanExplorer SQL Parser. Больше всего он похож на PostgreSQL, но некоторые конструкции из других диалектов тоже поддерживаются. Он также должен понимать различные BE-специфичные теги вроде <if>, <unless> и т. д. В данный момент находится в разработке: не все реальные запросы из проектов успешно разбираются BE-SQL.

Соответствие FreeMarker-конструкций и BE-SQL конструкций:

  • chr(...) — CHR() или CHAR()
  • concat(...) — CONCAT() или ||
  • coalesce(...) — COALESCE() или IFNULL()
  • length(...) — LENGTH() или LEN()
  • lpad(...) — LPAD()
  • replace(...) — REPLACE()
  • substring(...) — SUBSTR() или SUBSTRING()
  •  ?asInt — CAST(x AS BIGINT), TO_NUMBER(x)
  •  ?asVarChar — CAST(x AS CHAR), CAST(x AS VARCHAR), TO_CHAR(x)
  •  ?lower — LOWER()
  •  ?upper — UPPER()
  • currentDateTime — CURRENT_DATETIME
  • currentDate — CURRENT_DATE
  • fromFakeTable — FROM DUAL или можно не писать FROM вообще

Для ограничения количества записей можно просто писать SELECT ... LIMIT 1: это транслируется в соответствующий диалект SQL.

Список всех поддерживаемых SQL-функций

В скобках указываются синонимы

CONCAT, COALSCE (IFNULL), COUNT, SUM, MAX, MIN, SUBSTR (SUBSTRING), LENGTH (LEN), UPPER, LOWER, CHR (CHAR), TO_CHAR, TO_NUMBER, REPLACE, LPAD.

Список всех поддерживаемых операций

+, -, *, /, >, <, >=, <=, = (или ==), != (или <>), || (конкатенация строк), OR, AND (или &&), NOT (или !), XOR, LIKE.

Что точно не работает пока

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

  • Форматирование даты
  • Функции для извлечения полей из даты
  • BE-теги <if>/<unless> не в списке колонок