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

添加约束以防止表中出现NaN

  •  6
  • pgsandstrom  · 技术社区  · 6 年前

    我有一个列 myVar REAL NOT NULL . 此列应仅包含实际数字。我可以添加什么样的约束来防止 myVar 从成为NaN开始?

    1 回复  |  直到 5 年前
        1
  •  8
  •   mu is too short    6 年前

    通常需要一个特殊函数来检测值是否为NaN(类似于 is null is not null SQL的测试 null )但在PostgreSQL中, NaN = NaN is true :

    [...] 为了允许在基于树的索引中对数值进行排序和使用,PostgreSQL将 NaN 值相等且大于所有非- 南安 价值观

    因此,具有直接比较的简单检查约束就足够了:

    check (myvar <> 'NaN')
    

    如果愿意,可以包括演员阵容,但这不是必需的:

    check (myvar <> 'NaN'::real)
    check (myvar <> 'NaN'::numeric)