我可能在这里犯了一个愚蠢的初学者错误,但SQL不是我的优点之一。
我正在尝试修改一个简单的SQLite数据库(在SQLite管理器中),但在我弄清楚为什么我不能让这个select语句返回之前似乎无法做到。
SELECT *
FROM facts
WHERE id = -9215979828305747000
没有错误,也没有返回任何内容,无论它是桌面上的第一个条目。我也试过
SELECT *
FROM facts
WHERE CAST(facts.id AS INTEGER) = CAST('-9215979828305747000' AS INTEGER)
再没有。
我在浏览窗口中看到了该值,但无法在特定搜索中获取该值。这是因为价值长度而发生的吗?
答案 0 :(得分:1)
-9215979828305747000大于Int32(2147483647)的最大值,所以我猜facts.id不是整数。检查您的数据类型和CAST。
也许这是一个字符串?
SELECT *
FROM facts
WHERE id = '-9215979828305747000'
答案 1 :(得分:0)
我做了这个测试:
CREATE TABLE "test" (
"id" INTEGER PRIMARY KEY NOT NULL,
"name" TEXT
)
insert into test values (1, "tttt")
insert into test values (-9215979828305747000, "OO")
select name from test where id = -9215979828305747000'
> "OO"
所以它似乎在一个全新的表中工作。问题显然不在sql select或key或table定义中。
尝试将数据放在一些临时表中:
insert into table_copy values (select * from facts)