【问题标题】:Sqlite make sure input data is correct lengthSqlite 确保输入数据的长度正确
【发布时间】:2013-06-24 20:57:25
【问题描述】:

asked a question 得到了很好的答案,但也带来了许多其他问题。

假设我创建了一个表:

 CREATE TABLE test(my_id INTEGER(2));

我如何确保在其中插入数据(或实际从 csv 导入)时,该字段完全是一个 INTEGER(2),而不是 INTEGER(1) 或它会动态延伸到的任何其他内容..? 如果我不能这样做,是否没有内存/性能问题?

谢谢!

【问题讨论】:

    标签: database types sqlite precision


    【解决方案1】:

    从 CSV 文件导入的所有值都是字符串(但 type affinity 可能会改变这一点)。

    要确保值在一定范围内,请添加显式约束:

    CREATE TABLE test(
        my_id INTEGER CHECK (my_id BETWEEN 0 AND 100)
    );
    

    无论它们是如何声明的,整数值都存储在 1、2、3、4、6 或 8 个字节中,仅取决于值的大小。

    【讨论】:

    • 有没有办法检查所有导入的 csv 值是否真的是字符串?因为看起来不是这样,所以我可以对它们进行数值运算,而且它们是准确的......
    • 大多数数字运算会自动转换为数字。要检查类型,请使用typeof 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多