我将值从 SQL Azure 中的临时表插入到生产表中。暂存表中的值是 varchar,而生产表中的目标值是 tinyint(它是人类的年龄字段,所以我认为最多 255 就足够了;))
问题是由于源系统中的一个错误,我们倾向于将一些值作为 -1 或 -2 而它们应该是 0。这会导致问题,因为 TINYINT 只支持从 0 到 255 的值(而且事实上这也是错误的)。我想知道是否有某种 case 语句可以用来将值转换为 0,如果它们低于 0,或者如果它们超出 0-255 范围?
我将值从 SQL Azure 中的临时表插入到生产表中。暂存表中的值是 varchar,而生产表中的目标值是 tinyint(它是人类的年龄字段,所以我认为最多 255 就足够了;))
问题是由于源系统中的一个错误,我们倾向于将一些值作为 -1 或 -2 而它们应该是 0。这会导致问题,因为 TINYINT 只支持从 0 到 255 的值(而且事实上这也是错误的)。我想知道是否有某种 case 语句可以用来将值转换为 0,如果它们低于 0,或者如果它们超出 0-255 范围?
因为
TINYINT
只允许0-255
你也可以使用如果为数据类型(包括 -ve 数字)提供了无效输入,则上述
TRY_CAST
返回NULL
,我会考虑保留这种方式。但是,如果您必须将这些更改为,
0
您可以将其包装在ISNULL
尝试这样的事情