java - 为什么android中的sqlite光标返回不同的值?
问题描述
我有简单的查询,您可以在其中看到一行:
SELECT substr(..., 10, 6) as X
如果我使用cursor.getInt(...)
,我会得到 1048(“错误”值)
如果我使用cursor.getString(...)
我得到"002030"
(这是正确的)。
那么,是什么让 sqlite 将“002030”解析为 1048?
我是否必须每次都将其作为字符串获取并自己解析?
谢谢你。
解决方案
该函数substr()
返回一个字符串,因此您应该使用 检索该值cursor.getString()
,这将返回正确的结果。
如果要将结果作为整数,则必须在 sql 代码中将其转换为显式:
SELECT cast(substr(..., 10, 6) as integer) as X
或隐含地:
SELECT substr(..., 10, 6) + 0 as X
结果将是2030
没有前导0
s 的整数。
至于你得到的奇怪,Java 认为以八进制1048
数开头的数字文字,所以:0
int x = 002030;
分配1048
给x
which 是八进制数的十进制表示2030
。
推荐阅读
- android - 滑动事件适用于 iPhone 版 Chrome,但不适用于 android/chrome 开发工具
- django - 我想使用 url 参数作为可选过滤器 django rest 框架
- ajax - Ajax post 总是将空对象返回给控制器
- jquery - 更改按钮的文本
- python - 来自另一个文件/模块的 Python 模拟补丁
- c# - 计算多个不同的值 - Linq
- ios - 我试图将我的 ViewController3 设置为我的登录用户的 rootVC 和未登录的 vc ,但它变成黑色
- javascript - Visual Studio 未将 BuildFire 的 SDK 识别为项目,并且当我将任何文件设置为启动对象时发生错误
- c# - 在运行时用新创建的类型替换现有的类定义
- google-authentication - 将 Google Web Auth 添加到 Svelte/Sapper 的“正确”方法是什么?