It is important to sanitize data.
If you try to put an empty string in an INTEGER type (or its cousin) columns, SQL Server converts it implicitly into a zero. This might not be the expected behavior for the application so it is good to be aware.
declare @v char(1) = '' -- this could have been a varchar too with the same results declare @t table ( colbigint bigint, colint int, colsmallint smallint, coltinyint tinyint ) /* The wrong way that will change all blank strings to zero */ insert into @t ( colbigint, colint, colsmallint, coltinyint ) values ( @v, @v, @v, @v ) /* The correct way to sanitize */ insert into @t ( colbigint, colint, colsmallint, coltinyint ) values ( nullif(ltrim(@v), ''), nullif(ltrim(@v), ''), nullif(ltrim(@v), ''), nullif(ltrim(@v), '') ) select * from @t go