我有一个' varchar(MAX)' SQL Server表中的数据类型列,我想将其更改为' int'数据类型。是否会导致数据丢失。
答案 0 :(得分:0)
从SQL Server documentation,我们可以发现最大的bigint值是9,223,372,036,854,775,807
,即宽度为19个字符的数字。另一方面,varchar(max)
可以大大超过19个字符。因此,如果您的文本数据的数字大于此max int值,则转换将溢出int列。
答案 1 :(得分:0)
这将导致数据丢失取决于该列中的现有值。你可以测试它,如下所示 -
declare @tmp_tbl table (col_1 varchar(max))
insert into @tmp_tbl (col_1)
select '12345'
union all
select '1098.98'
union all
select 'abcde'
union all
select '2147483647'
union all
select '2147483648'
select try_convert(int, col_1)
from @tmp_tbl
当值无法转换为Int时, Try_Convert
函数将返回Null。