sql从varchar转换为double并保存在重复的键案例上

问题描述 投票:0回答:2

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

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(??)) + ?? ;

在第二个例子中,我希望值为值+ =(表中的值)并将其保存为varchar,但我不知道如何配置它。谷歌没有帮助,我在这里找到了一些例子,但没有任何工作,因为我想要。

mysql sql casting key varchar
2个回答
1
投票

您使用的DBMS是什么?这是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字段名称。我没有测试过,所以你可能需要修复语法。但它应该让您了解如何构建查询。


0
投票

在MySQL中,您可以:

INSERT INTO table (name, color, value)
    VALUES ('john', 'green', '0,98')
    ON DUPLICATE KEY UPDATE value = ( VALUES(value) + 0 )+ value;

其工作原理如下:

  • VALUES(value)是更新传递的值。
  • + 0隐含转换为数字。
  • + value增加现有价值。

MySQL会将其转换回字符串。但是,我强烈建议您不要将数字存储为字符串。 SQL具有用于存储值的适当数据类型。使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.