b>j)΄!Pԫ&;"kB޶}pSVT(wę!j x;-m@JnQ+պכ7MajfJͱ4jѲ撆RxZMz7vIW/dٞТזcZM~ji ߒsQzԠDW3Den"M+/B:-uIJ7j委9p='mANޭ=/B:-n&nUfqxZM~c Ϲ+,&ᾺܢF[(1*" ϒ"Jԧ<;b" "jܢF[x ,!q қ*]/؝27SMcs"ޭDQ/应ܢF_! :s" 7`F+SVTn"IJnQ/应B 4 wD"IJ׭-`S9DrjiEJ߅gJ应矁[xZM~n"IB؃!'Тѕ+(mIKʭ/|ϐܢF[xZMzG %嬩/c[[ FB3. Округление преобразования строки в число

FB3. Округление преобразования строки в число

Привет всем.

Открыл для себя, что в FB3 пара запросов:

select cast('1.5' as integer) from dual
select cast(cast('1.5' as numeric(3,1)) as integer) from dual

возвращает двойку.

Точнее, про второй я как бы это знал и учитывал. А вот про первый нет …

Если мне не изменяет память, лет пятнадцать (а то и больше) вместо округления было обрезание.

IBProvider в первом случае округляет и, помню, мне говорили что я пру против сервера …


В общем, меня это настолько удивило, что я проверил на IB5.6.

Фух, память мне не изменяет.

«cast(‘1.5’ as integer)» возвращает 1.

«cast(cast(‘1.5’ as numeric(3,1)) as integer)» возвращает 2.

PS. Вот жеж …

3 комментария

dimitr  on 25 февраля, 2021

В IB5.6 какой диалект был единственным? А в FB3 с каким проверял? Лучше бы проверил на IB6 в 3-м диалекте.

dimitr  on 25 февраля, 2021

А вообще, похоже на CORE-1120 🙂

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

>Лучше бы проверил на IB6 в 3-м диалекте.

Я сделал даже лучше — проверил на IB 14.1.0.231, третий диалект.

Запрос

select cast('1.5' as integer), cast(cast('1.5' as numeric(3,1)) as integer) from dual

возвращает значения 1 и 2.

Там за двадцать лет ничего не поменялось …

>А вообще, похоже на CORE-1120

Adriano — мой герой!

Leave a Comment