T-SQL - 转换数据类型时出错 - 显示有问题的行

War*_*ren 5 sql t-sql sql-server

在一个简单的INSERT命令,我收到一个错误:

转换数据类型时出错...

源数据具有多个源,并且组合成数十万行.

我可以重写我的语句以捕获错误并显示有问题的数据吗?

谢谢!

编辑:

代码请求:

insert Table_A 
  ([ID]
  ,[rowVersion]
  ,[PluginId]
  ,[rawdataId]
    ...
    ...
    ...
    )
select [ID]
      ,[rowVersion]
      ,[PluginId]
      ,[rawdataId]
       ...
       ...
       ...
FROM TABLE_B
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 6

在处理这个问题时,我采取了两种方法.该问题是由字符串到日期的隐式转换引起的.

如果你碰巧知道正在转换哪个字段(在你的例子中可能是真的,但并不总是在我的中),那么就这样做:

select *
from table_B
where isdate(col) = 0 and col is not null
Run Code Online (Sandbox Code Playgroud)

这对于所有数据类型可能都不是完美的,但它在实践中对我来说效果很好.

有时,当我想在select语句中找到有问题的行时,我会运行select,将数据输出到文本而不是网格.这是SSMS中的选项之一,沿着菜单下方的图标行.它将在错误之前输出所有行,这样可以识别出错误的行.当有一个order by子句时,这种方法效果最好,但出于调试目的,它对我有用.

在您的情况下,我可能会创建一个包含字符串的临时表,然后对此临时表进行分析,特别是如果Table_B不是一个表而是一个更复杂的查询.