首页 > 解决方案 > 是否有一种可移植的方式来编写检查 TEXT 值是否为整数的 CHECK 约束?

问题描述

是否有一种可移植的方式来编写下面的 CHECK?

CREATE TABLE tbl (
    id1 INTEGER NOT NULL,
    id2 TEXT NOT NULL,

    PRIMARY KEY (id1),
    CHECK ('check that id2 is positive integer')
)

标签: sql

解决方案


不,没有可移植的方式来处理格式错误的数据

话虽如此,每个数据库都有自己处理格式错误数据的方法。典型的解决方案是在检查约束中使用正则表达式。其他解决方案可以尝试将值转换为数字标量。所有这些解决方案都有效,但它们对每个数据库都有其怪癖。

如果可能,我建议您修复数据类型。这将大大简化所有这些令人头疼的问题。


推荐阅读