没有精度的Oracle数字类型 - 我怎么知道它是否是整数

问题描述 投票:0回答:1

我们供应商的数据库包含所有数字的数字类型,包括整数和十进制数。从字面上看,每个数字类型列都创建为NUMBER,没有精度和比例。

这是一个很大的问题,因为我们需要将这些列映射到目标系统上的正确数据类型,我们正在将这些表中的数据加载到。

我们需要知道数字是整数还是小数。

除了进行随机抽样/数据分析之外,是否可以推断出正确的数据类型?

更新:我接受了以下答案和@Bohemian的建议。除此之外,我将使用SAMPLE子句对表进行随机抽样,因为我的源表很庞大(数十亿行)。

SELECT
    MAX(CASE WHEN col1 IS NOT NULL AND col1 <> round(col1, 0) then 1 else 0 end) as col1,
    MAX(CASE WHEN col2 IS NOT NULL AND col2 <> round(col2, 0) then 1 else 0 end) as col2
FROM TABLE
SAMPLE(0.05)

如果我只想采样X行,请使用下面的公式来SAMPLE(N):

Xrows * 100 / table_rows_total

oracle oracle11g
1个回答
3
投票

您可以尝试选择每个FIELD,并查看FIELD的所有值是否等于ROUND(FIELD,0)。如果是,则该字段应为整数。如果没有,十进制。

© www.soinside.com 2019 - 2024. All rights reserved.