【发布时间】:2020-07-30 17:58:27
【问题描述】:
嘿,我正在尝试将数据类型从 varchar 转换为列名“标识”的浮点数。以下是我创建的查询,两者都抛出错误
Select distinct Convert(float,(Replace([Identification], '-',''))) FROM [A]
where identification is NOT Null;
Select Cast(Replace([Identification], '-','') AS FLOAT) FROM [A]
where identification is NOT Null;
错误消息:
消息 8114,第 16 级,状态 5,第 1 行
将数据类型 varchar 转换为 float 时出错。
【问题讨论】:
-
报错是告诉你问题所在,报错你不明白怎么办,我们可以尝试详细说明。此外,SQL Server 2008 已经停止支持一年多,您应该真正考虑升级。因为您使用的是不受支持的,所以您甚至无法访问
TRY_CAST/TRY_CONVERT,这确实会阻碍您修复数据。 -
我知道问题出在哪里。但我正在努力解决这个问题。您能告诉我如何更改数据类型吗?我也使用了 Cast and Convert 功能,但它不起作用。检查我上面的回复
-
您的列中有错误数据。这只是为什么在
(n)varchar中存储数字数据是一个坏主意的原因之一,您需要修复您的设计。不幸的是,就像我提到的,当您使用不受支持的软件时,您不能使用TRY_CONVERT;我个人建议你现在真的看看这些升级。 -
我无法升级,因为我没有访问权限。那是 DBA 的工作。我需要将解决方案整理到我的域中
标签: sql sql-server sql-server-2008