为什么sqlite游标在androidreturns中有不同的值?

Why the sqlite cursor in android returns different values?

我有一个简单的查询,您可以在其中看到一行:

SELECT substr(..., 10, 6) as X

如果我使用 cursor.getInt(...) 我得到 1048(“错误”值)

如果我使用 cursor.getString(...),我会得到 "002030"(这是正确的)。

那么,是什么让 sqlite 将“002030”解析为 1048?

我每次都必须把它作为字符串获取并自己解析吗?

谢谢。

函数 substr() returns 一个字符串,所以你应该用 cursor.getString() 检索值,其中 returns 是正确的结果。

如果您希望结果为整数,则必须在 sql 代码中将其转换为显式:

SELECT cast(substr(..., 10, 6) as integer) as X 

或隐含地:

SELECT substr(..., 10, 6) + 0 as X

结果将是没有前导 0 的整数 2030

至于你得到的奇怪的 1048,Java 将以 0 开头的数字文字视为 octal 数字,因此:

int x = 002030;

1048赋值给x,这是八进制数2030.

的十进制表示