Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将varchar值“N”转换为数据类型smallint时,转换失败_Sql_Sql Server_Stored Procedures_Ssis - Fatal编程技术网

Sql 将varchar值“N”转换为数据类型smallint时,转换失败

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”

我只是将一些数据从一个表插入到另一个表中,但我遇到了一个错误:

将varchar值“N”转换为数据类型smallint时,转换失败

这是因为我插入的一列是smallint数据类型,但数据是以“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”?我认为你需要清理你的数据。