我想更改SELECT语句中列的数据类型。我想要的数据类型的变化是从十进制到整数。我想舍弃数字的小数部分。
请告诉我该怎么做。
答案 0 :(得分:2)
使用floor()
函数。 floor(111.222)
将返回111
。这不会舍入数字,因此floor(111.999)
也将返回111
(与round()
的行为不同)。
通过使用下限功能,数据类型将从十进制转换为整数。
使用floor()
将数据转换为整数。如果您实际上要更改数据类型(为什么?),则需要将投影列强制转换为整数:
cast(floor(111.999) as integer) as whole_num
请注意,单独投射将对输出进行四舍五入。
SQLFiddle演示here。
在我想写一个相等表达式...的情况下,但Table1.id是十进制,而Table2.id是整数
在这种情况下真的没关系。基本上,Oracle具有一种用于数字数据的数据类型,即数字。有别名(十进制,整数等),但是可以自由转换为数字。即111.000 = 111
。因此,您可以完全按照显示的方式编写连接,而无需进行数据类型转换。
您唯一需要担心的是十进制ID不是整数,即id != floor(id)
。只要表已正确填充(并且您没有使用浮点数据类型之一),这应该不是问题。