изменить тип поля в операторе SELECT - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу изменить тип данных столбца в операторе SELECT.Я хочу изменить тип данных с десятичного на целое число.Я хочу отбросить десятичную часть числа.

Скажите, пожалуйста, как это сделать.

1 Ответ

0 голосов
/ 18 декабря 2018

Используйте функцию floor().floor(111.222) вернет 111.Это не округляет число, поэтому floor(111.999) также вернет 111 (что отличается от поведения round()).

При использовании функции floor тип данных будетпреобразуется из десятичного в целое число.

Использование floor() преобразует данные в целое число.Если вы действительно хотите изменить тип данных (почему?), Вам необходимо привести спроецированный столбец к целому числу:

cast(floor(111.999) as integer) as whole_num 

Обратите внимание, что приведение к самому себе округление вывода.

SQLFiddle demo здесь .


в условии, что я хочу написать выражение равенства ...), но Table1.id является десятичным и Table2.id это целое число

Это действительно не имеет значения в таком случае.В основном у Oracle есть один тип данных для числовых данных, число.Есть псевдонимы (десятичные, целые и т. Д.), Но они свободно конвертируются в число.То есть 111.000 = 111.Таким образом, вы можете написать свое соединение в точности так, как вы показали, без необходимости преобразования типов данных.

Единственное, о чем вам нужно беспокоиться, это если десятичный идентификатор не является чистым целым числом, то есть если id != floor(id).Это не должно быть проблемой, если таблица заполнена правильно (и вы не используете один из типов данных с плавающей запятой).

...