Sql server 需要帮助查找大型SQL语句中的许多浮点值错误吗

Sql server 需要帮助查找大型SQL语句中的许多浮点值错误吗,sql-server,floating-point,type-conversion,Sql Server,Floating Point,Type Conversion,在SSMS 2008 R2中将数据从一个表插入到另一个表时遇到问题。我需要弄清楚为什么大约150列无法从nvarchar转换为float。我得到了一个错误: "Error converting data type nvarchar to float." 因为这些都是在一个非常大的select语句中,所以我不会在每一列中获取问题的详细信息。我尝试使用的方法是: eachcolumnname = convert(float, eachcolumnname) 这在另一个标准select语句中 是否

在SSMS 2008 R2中将数据从一个表插入到另一个表时遇到问题。我需要弄清楚为什么大约150列无法从nvarchar转换为float。我得到了一个错误:

"Error converting data type nvarchar to float."
因为这些都是在一个非常大的select语句中,所以我不会在每一列中获取问题的详细信息。我尝试使用的方法是:

eachcolumnname = convert(float, eachcolumnname)
这在另一个标准select语句中

是否有一种方法可以让我获得关于所有问题的某种报告,而不必在每行上运行查询来查找所有问题。这些有问题的列位于一个表中,表中还有几百列是可以的。这些数据来自我所在组织以外的人,状态不好,但我别无选择。我需要得到清理,并在我的数据库,这样我就可以报告它

提前感谢您的建议。

试试这个:

SELECT  'PRINT ''' 
        + sc.Name 
        + '''; SELECT MIN(CAST(' 
        + sc.Name 
        + ' AS FLOAT)) FROM SourceTable'
FROM    sys.columns sc 
JOIN sys.types st ON st.system_type_id = sc.system_type_id
WHERE   OBJECT_NAME(Object_ID) = 'TargetTable'
        AND st.name = 'FLOAT'
此外,您还可以使用插入的
输出。*
,您将能够看到带有错误的行前面的行。 像这样:

create table #t (a float)

insert into #t
output inserted.* 
select a = cast(a as float)
from 
(select a = '1' union all select 'a') t

drop table #t

在结果窗格中,您将看到一行值为
1
,在消息窗格中,将出现转换错误。

问题是您有一个字符值正在转换为数值。例如,J不能转换为数字,因此会抛出一个错误。谢谢。这很有帮助。我现在正在尝试。我会报告我的结果。这很有帮助!谢谢你。@FrequentEsc编辑了我的答案。