我有一个文件(或表)假设表1由一个数字字段Num 1组成,该字段的值如1001. 001,1001. 000,1001. 002等。我想写一个SQL查询,从这个字段中过滤值,其中小数点位置不是000。SQL将选择记录1001.001、1001.002,但将过滤掉1001.000。有人能建议如何做到这一点,这个查询需要在IBMDB 2上运行,IBMDB 2运行在IBMAS 400(IBM-I)系统中。
carvr3hs1#
你可以从数字中减去整数部分,测试结果是0,如果整数部分可以适合int或bigint:
with table1 (num1) as ( values 1001.001, 1001.000, 1001.002 ) select * from table1 where num1 - bigint(num1) = 0
| NUM1|| --|| 一千零一千|fiddle
vulvrdjw2#
圆函数也起作用。将四舍五入到小数点后零位的数字与其本身进行比较。
with table1 (num1) as ( values 1001.001, 1001.000, 1001.002 ) select num1, round(num1,0) rounded from table1 where round(num1,0) <> num1 ;
hl0ma9xz3#
另一个选项是mod()函数。模数1将返回小数位。
with table1 (num1) as ( values 1001.001, 1001.000, 1001.002 ) select * from table1 where mod(num1,1) <> 0
3条答案
按热度按时间carvr3hs1#
你可以从数字中减去整数部分,测试结果是0,如果整数部分可以适合int或bigint:
| NUM1|
| --|
| 一千零一千|
fiddle
vulvrdjw2#
圆函数也起作用。将四舍五入到小数点后零位的数字与其本身进行比较。
hl0ma9xz3#
另一个选项是mod()函数。模数1将返回小数位。