我有一个功能,可以返回一个人的年龄或“死者”,如果他们已经死亡。因为它返回一个数字或者已经死亡,所以RETURN是一个VARCHAR2。
当返回年龄时,它返回如下值:72.93541936015413085912743681395289882628。有没有改变变量中的值只返回小数点前的字符?
由于
答案 0 :(得分:2)
将其转换为数字:
floor(cast(column as float))
会将其四舍五入
ceil(cast(column as float))
将围捕它
round(cast(column as float))
将围绕它
如果你不得不把它作为一个字符串发回去,那么把它丢回来
cast(round(cast(column as float)) as varchar2(50))
但您可能需要检查“已故”值,因此请使用案例:
select retVal =
case column
when 'deceased' then 'deceased' -- pushing up daisies
else cast(round(cast(column as float)) as varchar2(50)) --alive and kicking
end