我有一个函数返回一个人的年龄或'已死亡',如果他们已经死亡。因为它返回一个数字或死亡,RETURN是一个VARCHAR2。PLSQL函数返回小数点前的值
返回一个年龄时,它将返回如下值:72.93541936015413085912743681395289882628。无论如何改变变量内的值只返回小数点前的字符?
感谢
我有一个函数返回一个人的年龄或'已死亡',如果他们已经死亡。因为它返回一个数字或死亡,RETURN是一个VARCHAR2。PLSQL函数返回小数点前的值
返回一个年龄时,它将返回如下值:72.93541936015413085912743681395289882628。无论如何改变变量内的值只返回小数点前的字符?
感谢
投它作为一个数量:
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
这将不起作用,结果是类型VARCHAR2 – koopajah
@koopajah它将工作: Oracle会尝试将这个字符串转换成一个数字,这个数字是'round','floor'或者任何可以操作的数字,当它被放回'varchar 2',甲骨文将把它投回。只需要有一些逻辑来解决“死亡”的价值。 – Xophmeister
感谢您的帮助。由于某种原因,我无法使用演员工作,但使用您的想法为其余的我用它解决了这个问题: SELECT to_number(age)INTO v_number from dual; 从双重选择楼层(v_number)到年龄; – ToniHopkins
您可以使用SUBSTR()和INSTR()的组合,如下所示:http://stackoverflow.com/a/4389623/1606729 – koopajah