我是SQLite(和KMyMoney)的新手,KMyMoney(一个开源的个人财务管理器)允许一键导出数据到SQLite数据库中。
浏览SQLite数据库输出时,美元金额数据以基于“value”和“valueFormated”的奇怪格式存储在名为kmmSplits的表中,作为多个文本字段(见下面的屏幕截图)。“value”字段显然被写成除法方程(文本格式),这显然会生成“valueFormatted”字段(同样是文本格式)。“valueFormatted是正确的数字金额,但问题是括号被用来表示负数,而不是值前面的简单减号。这显然是一种会计数字格式,但我不知道如何将其解析为浮点值以运行计算SQL查询等。正值(不带括号)转换为FLOATS没有问题。
我试过使用CAST to FLOAT函数,但它不能进行除法运算,也不能将括号转换为负值(见屏幕截图)。
基本问题是:如何将“valueFormatted”字段(会计货币格式)中包含括号的文本值解析为常用数字格式,或者,如何将“value”字段中的除法公式转换为实际计算。
1条答案
按热度按时间biswetbf1#
使用
CASE
表达式检查valueFormatted
是否为括号内的数值,以及它是否为-1
乘以从第二个字符开始的子字符串(在此隐式类型转换过程中,SQLite将丢弃右括号):或者,将
'('
替换为“-”“并加上0
,以将结果转换为数字: