更改SELECT语句中字段的类型

时间:2018-12-18 07:41:22

标签: oracle oracle11g oracle10g

我想更改SELECT语句中列的数据类型。我想要的数据类型的变化是从十进制到整数。我想舍弃数字的小数部分。

请告诉我该怎么做。

1 个答案:

答案 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)。只要表已正确填充(并且您没有使用浮点数据类型之一),这应该不是问题。