无法将列 'some_field' 更改为小数数据类型

Cannot alter column 'some_field' to be data type decimal

当我尝试将 TEXT 数据类型的列更改为 DECIMAL 或相反时,它不会。但是,如果我先将其更改为 VARCHAR,则它可以更改为 DECIMAL。我的问题是,为什么我们不能直接从 TEXT 更改为 decimal 或 decimal 到 text?

Create Table temp
( 
    id int,
    some_field text NULL
) 

ALTER TABLE temp ALTER COLUMN some_field DECIMAL(16,2) NULL;
--Cannot alter column 'some_field' to be data type decimal(16,2).

正在将其更改为 varchar:

ALTER TABLE temp ALTER COLUMN some_field VARCHAR NULL;
--Command(s) completed successfully.

ALTER TABLE temp ALTER COLUMN some_field DECIMAL(16,2) NULL;
--Command(s) completed successfully.

SQL 服务器根本无法将文本转换为十进制。要查看它可以执行的隐式和显式转换,check the chart in the documentation.