首页 > 解决方案 > 将 ntext 转换为数字

问题描述

我的专栏之一被定义为ntext许多流不再支持的数据类型。我正在尽力将该列转换为数字或整数,并且每次尝试都可以到达任何地方。

reg_no #my ntext field | name | country | etc |

我尝试使用我们都使用的命令更改 col,但失败了

alter table tabl1
    alter column [reg_no] numeric(38,0)

错误:

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

有关解决此问题的任何建议或过去是否有人遇到过此问题,如果是,您是如何克服的

标签: sqlsql-server

解决方案


您应该能够分两步执行此操作:

alter table tabl1 alter column [reg_no] nvarchar(max);
alter table tabl1 alter column [reg_no] numeric(38,0);

ntext已弃用numeric且不支持转换为,但支持转换为nvarchar()

这假设这些值与 兼容numeric。否则你会得到一个类型转换错误。如果发生这种情况,您可以使用以下方法获取违规值:

select *
from t
where try_convert(numeric(38, 0), try_convert(nvarchar(max), x)) is null

推荐阅读