如何处理“转换数据类型错误”错误?

一位读者最近询问了他们遇到的转换数据类型错误的错误。由于这是一个常见问题,特别是当数字数据与VARCHAR数据类型一起存储时,我想你会很感激我与他们分享的答案。

我正在使用Windows 10SQL SMS 2014。当我运行查询时,我收到以下错误消息: 

将数据类型varchar转换为float时出错。您可以帮助解决此错误消息吗?

通常当SQL尝试将数字(例如1.25)从文本转换为float时,它可以轻松地执行此操作但是,如果值中存在一些非数字字符,它会挂起并会抛出转换数据的错误。

例如,转换1.25会起作用,但转换$1.25不会,因为服务器不知道如何处理$

我怀疑你在试图转换的列中有一些数据不是纯粹数字。

如果您浏览数据,我会在那里看到一些字母数据。

以下是您可以在查询编辑器中尝试的一些示例:

--EXAMPLES
DECLARE @myText as varchar(20)
DECLARE @myFloat as Money

--This Works!  :)
Print 'Try 1.20 * 1.10'
SET @myText = '1.20'
SET @myFloat = @myText * 1.10
Print @myFloat


--This Will throw an error   :(
PRINT 'Try $1.20 * 1.10'
SET @myText = '$1.20'
SET @myFloat = @myText * 1.10
Print @myFloat

根据您尝试对数据执行的操作(例如在查询中使用它),您可能必须使用IIF函数ISNUMERIC一起测试是否可以转换列值,如果不能,则显示另一个合适的价值。

如果测试的值是数字,则ISNUMERIC函数返回1; 否则为0。它可用于预先测试字符是否可以测试数字数据类型。

这是一个例子:

SELECT IIF(ISNUMERIC(myTexttoFloatColumn) = 1,
           myTextToFloatColumn*1.50, 
           myTexttoFloatColumn)
FROM   mySampleTable

如果列可以转换为数字,或者只显示原始值,则可以将coloumn乘以1.5

 

原文地址:https://www.codeproject.com/Articles/1279823/How-do-I-handle-a-Error-converting-data-type-error

你可能感兴趣的:(数据库)