Sql 在“我的选择列”列表中将数据类型nvarchar转换为数字时出错

Sql 在“我的选择列”列表中将数据类型nvarchar转换为数字时出错,sql,sql-server-2012,Sql,Sql Server 2012,我有一个表,可以在其中将记录从一个表插入到另一个表 像 我无法将表2中的记录插入表1,表2有问题 将数据类型nvarchar转换为数字时出错 虽然我一直在表2中挖掘,但有两个领域可以找到不同的数据类型,与源表相比,我有所改变,但仍然发现相同的问题 在我的表2中,所有有问题的字段都显示相同的错误消息( 将数据类型nvarchar转换为数字时出错),当我在选择列表中选择单个列时,选择列表中的多个列都出现相同错误,两个表中的数据看起来也几乎相同。您可以使用try\u convert()。我不知道目标列

我有一个表,可以在其中将记录从一个表插入到另一个表 像

我无法将表2中的记录插入表1,表2有问题

将数据类型nvarchar转换为数字时出错

虽然我一直在表2中挖掘,但有两个领域可以找到不同的数据类型,与源表相比,我有所改变,但仍然发现相同的问题

在我的表2中,所有有问题的字段都显示相同的错误消息(
将数据类型nvarchar转换为数字时出错),当我在选择列表中选择单个列时,选择列表中的多个列都出现相同错误,两个表中的数据看起来也几乎相同。

您可以使用
try\u convert()
。我不知道目标列是什么,但类似这样:

insert into dbo.table1 (col1, col2, col3)
    select try_convert(numeric(38, 6), col1),
           try_convert(numeric(38, 6), col2), 
           try_convert(numeric(38, 6), col3)
    from table2;
也就是说,您可能希望找到令人不快的值:

select col1
from table2
where try_convert(numeric(38, 6), col1) is null and col1 is not null;

然后修复数据

我要求您首先找出两个表的元数据的差异

SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUM_NAME IN () 
AND TABLE_NAME =''table1'
EXCEPT 
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUM_NAME IN () 
AND TABLE_NAME =''table2'

(1) 用您正在使用的数据库标记您的问题。(2) 提供示例数据和所需结果。SQL server 2012请阅读中的指导原则,并相应地回答您的问题。我可以找到不同的数据类型,与源表相比,我已经更改了-您可以发布这两个表的表定义吗?(或者至少是所有列的数据类型)数据类型以前是numeric和nvarchar,我已经将nvarchar更改为numeric数据类型same@NareshYadala . . . <代码>try_convert()无法生成类型转换错误。如果您仍然得到那个错误,那么这表明您在表上有一个触发器。您能删除表1并执行下面的查询吗?从表2中选择表1中的col1、col2、col3
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUM_NAME IN () 
AND TABLE_NAME =''table1'
EXCEPT 
SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUM_NAME IN () 
AND TABLE_NAME =''table2'