Вести с полей

Всех с последним днем января 🙂

Третий или четвертый день тупо смотрю на арифметику первого диалекта FB3.

Чудная она.

select 1+12345678 from dual

Сервер говорит, что колонка имеет тип INTEGER.

select cast(1+12345678 as varchar(64)) from dual

Сервер возвращает строку «12345679.00000000»

select BIN_AND(1+12345678,1) from dual

Сервер возвращает ошибку:

expression evaluation not supported
Arguments for BIN_AND must be integral types or NUMERIC/DECIMAL without scale


UPD. Ну и, наверное, чтобы не расслаблялся:

select cast(cast(1 as NUMERIC(1,0)) +cast(1 as NUMERIC(1,0)) as VARCHAR(64))  from dual

Сервер возвращает строку «2»

select cast(cast(1 as DECIMAL(1,0)) +cast(1 as DECIMAL(1,0)) as VARCHAR(64))  from dual

Сервер возвращает строку «2.000000000000000»

🙂

One Comment

Dmitry Kovalenko  on 5 февраля, 2021

Добавлю в копилку проблем первого диалекта.

Запрос

select CAST(((CAST(7 as smallint) - cast(4 as numeric(2,0))) / CAST(7 as smallint)) AS VARCHAR(32)) from dual

возвращает строку «0.4285714285714285».

А похожий запрос

select CAST(((CAST(7 as smallint) - cast(4 as numeric(2,1))) / CAST(7 as smallint)) AS VARCHAR(32)) from dual

возвращает строку «0.4».

Leave a Comment