假设我有一个包含“CustomerId”列的大型数据集,该数据来自某个外部源,在某些转换中使用,并向其他系统公开。
CustomerId实际上总是一个整数,但它被接收为字符串类型,因此理论上它可以包含非整数字符。我不想显式地将它强制转换为整数,以防止它是字符串的潜在情况,因为这会中断流,但我也想将它强制转换为整数,因为这会大大加快它的使用速度。
因此,我考虑的是创建一个CustomerId列,它是从原始值转换而来的整数,以及一个CustomerIdVarchar,它是相同的值,但具有varchar类型。除非原始值不能转换为整数,否则CustomerIdVarchar将为null。这样,对于所有意图和目的而言,前者可以以有效的方式使用,但它允许防范潜在的离群值,并避免破坏系统。
这是个好主意吗?
2条答案
按热度按时间l5tcr1uw1#
你说的是
CustomerId is in practice always an integer
,所以如果它是不能转换成INT的东西,那么一定是出了问题。为什么要冒险插入错误的数据,这可能会导致错误?
更好的方法是在INSERT时显式地将值转换为INT,如果出现错误,则检查问题所在并解决它。
tag5nh1u2#
你不会写条件语句吗?
可以使用ISNUMERIC()函数确定CustomerID是否有效。如果给定值为数值,则返回"1",否则返回0。
例如:
然后,您可以使用该变量来确定是否要将其转换为int。