从varchar转换为numeric

时间:2017-09-11 23:19:25

标签: sql sql-server-express numeric varchar alter

我有两列latitudelongitude。我应该在从固定宽度文件导入时将它们设置为数字,但没有时间重新执行该过程。我正在使用SQL Server Express,必须使用导入向导。有92列。

无论如何,当我尝试将其从varchar(9)更改为numeric (11,6)时,使用以下代码并收到错误(如下所示)。我已将设置修改为可以更改名称和数据类型的位置。我知道在对象资源管理器中使用设计功能会产生类似的错误。还有其他方法可以解决这个困境吗?

代码:

alter table dbo.tablename
    alter column latitude numeric(11,6);  

错误:

  

Msg 8114,Level 16,State 5,Line 1
  将数据类型varchar转换为数字时出错。

刚刚找到以下代码:

alter table tablename
alter column latitude float

为什么这样做,但不是以前的?

1 个答案:

答案 0 :(得分:1)

您需要找到一个值。我不确定SQL Server Express是否支持isnumeric(),所以这是一种可能性:

select latitude
from tablename
where isnumeric(latitude) = 0;

否则,您可以使用like

来估算此值
where latitude not like '%[^0-9.]%' and
      latitude not like '%.%.%'