截断整数

时间:2015-06-11 16:02:04

标签: sql sql-server oracle

我有一个任务要将一个整数砍掉1位数。 例如,如果新限制为3位数,则更改后1234将变为999。如果之前的更改值是12345,则更改后它应该变为999。如果预变化值为564则保持不变。

这必须在Oracle和SQL服务器上完成。 truc函数只截断十进制但不是整数。

在SQL,PL / SQL或T-SQL中执行此操作的最佳方法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

你可以使用case语句,如:

SELECT CASE [yourInt] >= 1000 THEN 999 ELSE [yourInt] END AS 'UpperLimit'
From [YouTable]

答案 1 :(得分:2)

这适用于T-SQL。将其转换为其他sql方言应该就像找到类似的方法一样简单

declare @numDigits INT = 3;
declare @maxNumber INT = POWER(10,@numDigits)-1 -- gets "999" when using 3 digits, 9999 when using 4 etc


DECLARE @input INT = 1234
DECLARE @output INT = IIF(@input>@maxNumber,@maxNumber,@input)

SELECT @output -- selects 999

Oracle确实具有POWER功能,但does not have the ternary/IIF function