java - Sqlite 将文本转换为十进制?

标签 java android sql

我有一个 SQLitedb,有一列:amount text not null

在金额列中,我以这种格式存储美元值:1.01 美元、40.58 美元等。

我正在尝试使用

来总结美元值(value)
SELECT SUM(amount) FROM record WHERE date LIKE '"+date+"'"

然而,它不起作用,大概是因为你不能添加文本。我知道这不是理想的存储方式,但我该如何解析金额以便将它们相加?

最佳答案

好吧,正如您所说,这远不是存储值的理想方式(从一开始就应该采用 decimal/real 格式),但是您可以做这样的事情:

SELECT SUM(SUBSTR(amount, 2)) FROM record WHERE date LIKE '"+date+"'"

SUBSTR 方法是一个文本函数,它将获取文本的一部分(在本例中,从起始索引开始)。这里的问题是 $ 符号,它混淆了动态类型转换,让您相信您正在尝试将字符串加在一起。

这现在应该可以工作了,因为 SQLLite 允许 dynamic typing (简而言之,意思是用于比较的是值,而不是容器)。

关于java - Sqlite 将文本转换为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5171091/

相关文章:

android - 如何制作可滚动的 TableLayout?

php - SQL从表中选择并获取表名

sql - 连接两个表,然后连接第三个

java - Java 中的双向循环链表

java - 如何比较 Ruta 规则中两个不同注释的特征?

android - 如何格式化日期android?

mysql - SQL选择计算

java - 设置 JProgressBar

java - JSON 解析错误。 key 存在但未找到

android - 我需要删除特定 Activity 中的顶部应用栏