我只是将一些数据从一个表插入到另一个表中,但遇到了一个错误:
将varchar值“n”转换为数据类型smallint时转换失败。
因为我要插入的一列是 smallint
数据类型,但数据以“n”的形式出现,因此引发了一个错误。
Insert into target
(
ID
)
select
id
from source
数据类型 id
来源是 varchar(10)
目标id的数据类型为 smallint
.
有人能提出答案吗?我试过使用cast函数,但不起作用。
我只是将一些数据从一个表插入到另一个表中,但遇到了一个错误:
将varchar值“n”转换为数据类型smallint时转换失败。
因为我要插入的一列是 smallint
数据类型,但数据以“n”的形式出现,因此引发了一个错误。
Insert into target
(
ID
)
select
id
from source
数据类型 id
来源是 varchar(10)
目标id的数据类型为 smallint
.
有人能提出答案吗?我试过使用cast函数,但不起作用。
1条答案
按热度按时间ubbxdtey1#
正如其他人提到的,不能将值为'n'的varchar(10)转换为smallint。
您需要决定将什么值(如果有的话)插入到源值所在的目标表中
[id]
包含0-9以外的字符或超出smallint的范围。如果决定将该值设为null,则可以使用
TRY_CAST()
函数。。。这将插入一个
NULL
,如果[id]
包含0-9以外的字符或转换为超出smallint范围的整数。如果您决定在这个条件下插入一个预先确定的数字(例如,0),您可以将
TRY_CAST()
用一个COALESCE()
功能。。。这将插入一个
0
,如果[id]
包含0-9以外的字符或转换为超出smallint范围的整数。