Sql 将varchar值“N”转换为数据类型smallint时,转换失败
我只是将一些数据从一个表插入到另一个表中,但我遇到了一个错误: 将varchar值“N”转换为数据类型smallint时,转换失败 这是因为我插入的一列是smallint数据类型,但数据是以“N”的形式出现的,因此它抛出了一个错误Sql 将varchar值“N”转换为数据类型smallint时,转换失败,sql,sql-server,stored-procedures,ssis,Sql,Sql Server,Stored Procedures,Ssis,我只是将一些数据从一个表插入到另一个表中,但我遇到了一个错误: 将varchar值“N”转换为数据类型smallint时,转换失败 这是因为我插入的一列是smallint数据类型,但数据是以“N”的形式出现的,因此它抛出了一个错误 Insert into target ( ID ) select id from source 源id的数据类型为varchar10,目标id的数据类型为smallint 有人能提出答案吗?我尝试使用cast函数,但它不起作用。正如其他人所提到的,不能将值为“N”
Insert into target
(
ID
)
select
id
from source
源id的数据类型为varchar10,目标id的数据类型为smallint
有人能提出答案吗?我尝试使用cast函数,但它不起作用。正如其他人所提到的,不能将值为“N”的VARCHAR10转换为SMALLINT 如果[id]的源值包含0-9以外的字符或不在SMALLINT范围内,则需要确定要插入到目标表中的值(如果有) 如果您决定将该值设为null,则可以使用TRY\u CAST函数 插入目标[ID] 选择TRY_CAST[id]作为SMALLINT 从源头上; 如果[id]的源值包含0-9以外的字符,或者转换为超出SMALLINT范围的整数,则将插入NULL 如果您决定在这个条件下插入一个预先确定的数字,比如0,您可以将TRY_CAST与COALESCE函数结合起来 插入目标[ID] 选择COALESCE TRY_CAST[id]作为SMALLINT,0 从源头上;
如果[id]的源值包含0-9以外的字符或转换为SMALLINT范围以外的整数,则将插入一个0。SQL Server没有TRY\u CAST吗?您希望“N”变成什么样的smallintvalue?应该像插入目标表一样插入它。您想对“N”做什么?不能将其插入int列。您需要提供一些示例数据并解释如何处理它。为什么要在smallint列中插入“N”?我认为你需要清理你的数据。