mysql - sql 从 varchar 转换为 double 并保存重复的键值

标签 mysql sql casting key varchar

我使用以下查询来保存一些信息

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/

相关文章:

mySQL MATCH AGAINST 包含的字符串

当按索引列排序时,MySql Filesort 和临时的,而不是在 pk 上排序时

PHP - while mysql_fetch_array 循环错误?

sql - 结构化查询语言中的 "Structured"是什么?

javascript - Node.JS/Javascript - 将字符串转换为整数会返回 NaN,而我不希望它返回

mysql - MySQL中列名 "order"的替代品

sql - 如何在MySQL的结果集中选择具有唯一字段的所有行,并获取该行中的所有字段?

php - SQL - 选择用户名 WHERE 角色 = $string

java - 为什么不推荐从 List<A> 转换为 List<B>?

c - 错误 - void* - 未知大小