我正在使用 99% 数字的旧系统中的 ItemNumber 字段,但有一些记录包含字母。这些数字都用前导零填充,所以我想我会将它们转换为 bigint 来解决这个问题,但是当它到达带有字母的记录时,它当然会引发错误。
我认为以下 case 语句会起作用,但它仍然会引发错误。如果 isnumeric(itemnumber) = 1 条件不成立,为什么 SQL Server 还要评估演员表?
select case when isnumeric(itemnumber) = 1
then cast(itemnumber as bigint)
else itemnumber
end ItemNumber
from items
最好的解决方法是什么?