【发布时间】:2011-04-06 23:29:39
【问题描述】:
我需要使用简单的select来进行十进制比较操作,例如:
select * from table_a where time > 0.0004
身份证时间
0 0.000502
1 0.000745
2 0.000725
4 0.000197
5 0.000176
6 0.000833
7 0.000269
8 0.000307
9 0.000302
结果包含满足比较的值。简而言之,“时间 > 0.0004”总是计算为真,而“时间
我尝试将时间列的类型从十进制转换为浮点型,但没有成功。
如果我使用子查询,它会正确执行查询:
select * from table_a where time > (select time from table_a where id=8);
身份证时间
0 0.000502
1 0.000745
2 0.000725
6 0.000833
表创建:
CREATE TABLE "table_a" ("id" integer NOT NULL PRIMARY KEY, "time" decimal NOT NULL);
【问题讨论】:
-
SELECT id, time, typeof(time) FROM table_a返回什么? -
typeof(time) 为所有行返回“文本”。我使用“.import”命令加载表,看来这就是问题所在。如果我使用“INSERT”插入记录,则值的类型是“真实”而不是“文本”。
-
感谢您发布有关数据如何以文本形式插入的详细说明。如果您不注意那些数据类型的事故,SQLite 有时会有点棘手。就个人而言,我们所有的模式在列上都有
check约束以强制执行特定的数据类型。