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