BE-SQL
Материал из DevelopmenOnTheEdge
Версия от 17:19, 19 ноября 2015; Lan (обсуждение | вклад)
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> не в списке колонок