代码之家  ›  专栏  ›  技术社区  ›  mishkin

不带精度的Oracle数字类型-我如何知道它是不是整数

  •  0
  • mishkin  · 技术社区  · 7 年前

    我们供应商的数据库中有所有数字的数字类型,包括整数和小数。从字面上看,每一个数字类型的列都是作为数字创建的,没有精度和比例。

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

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

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

    更新: 我接受了下面的回答和@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行进行采样,请使用下面的公式进行采样(n):

    xrows*100/表\行\总计

    1 回复  |  直到 7 年前
        1
  •  3
  •   TheMouseMaster    7 年前

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