【问题标题】:SQL server - update VARCHAR value to DECIMALSQL 服务器 - 将 VARCHAR 值更新为 DECIMAL
【发布时间】:2016-01-19 04:14:06
【问题描述】:

将资源表中护士资源的比率提高 10%。

我尝试了这段代码但失败了

UPDATE Resourcetbl 
SET  Rate = convert(varchar(255), convert(decimal(10,2), Rate * 1.1))
WHERE ResName = 'nurse';

我收到错误消息算术溢出错误将 varchar 转换为数据类型数字。


速率为 VARCHAR(20)

【问题讨论】:

  • 我更喜欢语法CAST( rate AS DECIMAL(10,2) ) 而不是转换。
  • 您应该使用正确的类型(数字类型)存储rate
  • 是的,你是对的,但表已经创建,所以我无法更改它

标签: sql sql-server insert decimal varchar


【解决方案1】:

在乘法之前将Rate 转换为decimal

UPDATE Resourcetbl 
SET  Rate = convert(varchar(255), convert(decimal(10,2),Rate) * 1.1)
WHERE ResName = 'nurse';

【讨论】:

  • 不工作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>将 varchar 值“22.000”转换为数据类型 int 时转换失败。
  • 我想你不知道自己想要什么
  • @DraganSekuloski 在它不起作用的地方添加示例数据
  • 正如我在尝试将资源表中护士资源的比率提高 10% 之前提到的。但速率是 VARCHAR(20),这给了我一个问题
  • @DraganSekuloski 此代码适用于您提供的数据。也许,在Rate 列中没有数字的地方
【解决方案2】:

因为你必须在算术运算之前将你的值转换为十进制

convert(varchar(255), (convert(decimal(10,2), Rate) * 1.1))

【讨论】:

  • 将 varchar 值 '22.000' 转换为数据类型 int 时转换失败。
【解决方案3】:

你可以使用 CAST

UPDATE Resourcetbl 
SET  Rate = convert(varchar(255),CAST(rate AS DECIMAL(9,2)) * 1.1))
WHERE ResName = 'nurse';

【讨论】:

  • 将 varchar 值 '22.000' 转换为数据类型 int 时转换失败。
  • @DraganSekuloski:- 更新了我的答案。请立即检查!
  • 不工作 将 varchar 值“24.200”转换为数据类型 int 时转换失败。 -- 感谢您的努力,>>>>>>>> >>>>>>>> 终于完成了这项工作 UPDATE Resourcetbl SET Rate += (Rate*10)/100 WHERE ResName = 'nurse';
【解决方案4】:

出乎意料 - 这可以完成工作

更新资源tbl 设定比率 += (比率*10)/100 WHERE ResName = '护士';

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 2017-04-13
    • 2020-09-17
    • 2015-05-15
    相关资源
    最近更新 更多