我使用以下查询来保存一些信息
INSERT INTO table (name,color,value) VALUES ('john','green','0,98')
所有字段的类型均为 varchar 如果出现重复键(假设 john 是键),我的查询应更改为
INSERT INTO table (name,color,value) VALUES ('john','green','0,98')
ON DUPLICATE KEY UPDATE value=CAST(value as DECIMAL(??)) + ?? ;
在第二个示例中,我希望该值为 value += (表中的值)并将其保存为 varchar 但我不知道如何配置它。谷歌没有帮助,我在这里找到了一些例子,但没有达到我想要的效果。
最佳答案
您使用什么数据库管理系统?这是您可以尝试的 Postgres UPSERT 示例:
INSERT INTO mytable (name, color, value)
VALUES('john', 'green', CAST('0.98' AS DECIMAL(10,2)))
ON CONFLICT (name) DO UPDATE SET
value = mytable.value + CAST('0.98' AS DECIMAL(10,2))
;
只需将小数精度替换为您需要的精度,然后输入正确的 PK 字段名称即可。我还没有测试过它,所以你可能需要修复语法。但它应该让您了解如何构建查询。
关于mysql - sql 从 varchar 转换为 double 并保存重复的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47850785/