【问题标题】:Issue converting string to decimal将字符串转换为十进制的问题
【发布时间】:2018-02-07 03:29:15
【问题描述】:

我真的厌倦了在 SQL Server 中将字符串转换为十进制。

这是我正在尝试转换为十进制的查询

DECLARE @price VARCHAR(50)
SET @price = '168,00'

SELECT
    REPLACE(CAST(@price AS DECIMAL(29,2)), '.', ',')

UPDATE MyTable 
SET Invoice = REPLACE(CAST(@price AS DECIMAL(29,2)), '.', ',') 
WHERE ID = 111

但我收到此错误:

消息 8114,第 16 级,状态 5,第 7 行
将数据类型 varchar 转换为数值时出错

我怎样才能摆脱这个问题?

【问题讨论】:

  • 在演员阵容之前进行替换,而不是之后(你已经把它们颠倒了)。你正在做演员/替换;你需要替换/转换。

标签: sql sql-server sql-server-2012


【解决方案1】:

在进行转换之前先替换,并且必须用句点替换逗号。

SET Invoice = CAST(REPLACE(@price, ',', '.') AS decimal(29,2))

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多