【问题标题】:Converting from varchar to numeric从 varchar 转换为 numeric
【发布时间】:2017-09-11 23:19:24
【问题描述】:

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

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

代码:

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

错误:

消息 8114,第 16 级,状态 5,第 1 行
将数据类型 varchar 转换为数值时出错。

刚刚找到如下代码:

alter table tablename
alter column latitude float

为什么这个有效,而不是以前的?

【问题讨论】:

  • 标记你的 RDBMS,每个都有不同的语法。你确定里面的所有数据都是数字吗? '如果是 SQL-Server,请尝试运行:SELECT MIN(ISNUMERIC(latitude)) FROM YourTable。你得到 1 还是 0 ?
  • 返回值 1。

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


【解决方案1】:

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

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

否则,您可以使用like 近似:

where latitude not like '%[^0-9.]%' and
      latitude not like '%.%.%'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多