【问题标题】:Error converting data type nvarchar(50) to numeric将数据类型 nvarchar(50) 转换为数值时出错
【发布时间】:2020-03-14 15:25:49
【问题描述】:

我有一个类型为NVARCHAR(50) 的价格列。在这里面,我有像123,22 这样的数据作为一个字符串并继续。它们现在是字符串,我想将它们转换为decimal(18,2),我正在尝试查询它但给了我一个错误:

UPDATE reservations
SET price = CONVERT(NVARCHAR(50),CONVERT(decimal(18, 2), price,105))
ALTER TABLE reservations
ALTER COLUMN price decimal(18, 2)

将数据类型 nvarchar 转换为数值时出错。

我之前已经为datetime 运行过这段代码,它可以工作,但对于decimal,我收到了这个错误。谁能告诉我问题所在?

【问题讨论】:

标签: sql sql-server casting sql-update


【解决方案1】:

我认为您应该将 comma 替换为 dot 。例如;

DECLARE @price AS NVARCHAR(50)=N'123,22'

SELECT TRY_CONVERT(decimal(18, 2), REPLACE(@price,',','.'),105)

如果我们根据这种方法更改您的查询;

UPDATE reservations
SET price= CONVERT(NVARCHAR(50),CONVERT(decimal(18, 2), REPLACE(price,',','.'),105))
ALTER TABLE reservations
ALTER COLUMN price decimal(18, 2)

【讨论】:

    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2015-12-24
    • 2020-06-02
    • 2012-09-25
    相关资源
    最近更新 更多