如何过滤SQL中的小数位IBM DB2数据库运行在IBM-I(as 400)

z9smfwbn  于 2023-10-18  发布在  DB2
关注(0)|答案(3)|浏览(188)

我有一个文件(或表)假设表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)系统中。

carvr3hs

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

vulvrdjw

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 ;
hl0ma9xz

hl0ma9xz3#

另一个选项是mod()函数。模数1将返回小数位。

with table1 (num1) as (
  values
  1001.001,
  1001.000,
  1001.002
)
select * from table1 where mod(num1,1) <> 0

相关问题