SQLite3中如何对含货币符号的文本格式数值求和?
解决SQLite中带货币符号的数值求和问题
你遇到的问题根源是"Item Total"字段的数值带$符号,直接用CAST转FLOAT时,SQLite无法识别这类带符号的字符串,会默认转为0.0,导致求和结果错误。以下是两种实用的解决方法:
方法一:SQL查询层面直接处理
利用SQLite的REPLACE函数先剔除货币符号,再转换为数值类型求和,代码示例:
cursor.execute('SELECT SUM(CAST(REPLACE("Item Total", "$", "") AS FLOAT)) FROM price') res_sum = cursor.fetchone() print(res_sum)
如果数值里包含千分位逗号(比如$1,234.56),可以嵌套REPLACE去掉逗号:
SELECT SUM(CAST(REPLACE(REPLACE("Item Total", "$", ""), ",", "") AS FLOAT)) FROM price
方法二:Python代码中处理数据
先从数据库取出所有带符号的字符串,在Python中清理格式后转浮点数再求和:
cursor.execute('SELECT "Item Total" FROM price') rows = cursor.fetchall() total = sum(float(item[0].replace("$", "")) for item in rows) print(total)
若存在千分位逗号,需额外替换:item[0].replace("$", "").replace(",", "")
内容的提问来源于stack exchange,提问作者Olga Melnikova
相关产品推荐
相关产品推荐

