我有一个任务要将一个整数砍掉1位数。 例如,如果新限制为3位数,则更改后1234将变为999。如果之前的更改值是12345,则更改后它应该变为999。如果预变化值为564则保持不变。
这必须在Oracle和SQL服务器上完成。 truc函数只截断十进制但不是整数。
在SQL,PL / SQL或T-SQL中执行此操作的最佳方法是什么?
提前致谢。
答案 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