将数据类型nvarchar(50)转换为数字

时间:2019-11-19 07:12:23

标签: sql sql-server casting sql-update

我有一个价格列,其类型为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,却遇到此错误。谁能告诉我这个问题?

1 个答案:

答案 0 :(得分:3)

我认为您应该将逗号替换为。例如;

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)