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

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

baizhongzheng 回答:将数据类型nvarchar(50)转换为数字

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

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,REPLACE(price,105))
ALTER TABLE reservations
ALTER COLUMN price decimal(18,2)
本文链接:https://www.f2er.com/3075655.html

大家都在问