将varchar值'N'转换为数据类型smallint时,转换失败。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将varchar值'N'转换为数据类型smallint时,转换失败。相关的知识,希望对你有一定的参考价值。
我只是将一些数据从一个表插入到另一个表中,但我面临一个错误。
当把varchar值'N'转换为数据类型smallint时,转换失败。
这是因为我插入的其中一列的数据类型是 smallint
数据类型,但数据是以'N'的形式出现,所以出现了一个错误。
Insert into target
(
ID
)
select
id
from source
数据类型为 id
源于 varchar(10)
而来自目标的ID数据类型为 smallint
.
有谁能给出答案吗?我试过使用投射函数,但没有用。
正如其他人所提到的,你不能将一个值为'N'的VARCHAR(10)转换成一个smallint。
你需要决定将什么值(如果有的话)插入到目标表中,其中源值为 [id]
包含0-9以外的字符,或者超出了SMALLINT的范围。
如果你决定将值清空,可以使用 TRY_CAST()
功能...
INSERT INTO target ( [ID] )
SELECT TRY_CAST ( [id] AS SMALLINT )
FROM source ;
这将插入一个 NULL
的源值,如果 [id]
包含0-9以外的字符,或者转换为SMALLINT范围以外的整数。
如果你决定在这个条件下插入一个预先确定的数字(例如,0),你可以在这个条件下结合一个 TRY_CAST()
带着 COALESCE()
功能...
INSERT INTO target ( [ID] )
SELECT COALESCE ( TRY_CAST ( [id] AS SMALLINT ), 0 )
FROM source ;
这将插入一个 0
的源值,如果 [id]
包含0-9以外的字符,或者转换为SMALLINT范围以外的整数。
以上是关于将varchar值'N'转换为数据类型smallint时,转换失败。的主要内容,如果未能解决你的问题,请参考以下文章
c# 将数据类型 varchar 转换为 bigint 时出错
在将 varchar 值 'xiaoming' 转换成数据类型 int 时失败。