如何克服ISNUMERIC列的限制" ERROR:溢出一个int列"

时间:2015-05-13 09:55:37

标签: sql-server

我有一个要求,我必须检查VARCHAR(200)列中输入的值是否为数字,如果是,则应传递相关的错误消息。

我正在使用ISNUMERIC函数进行验证,因为我的列值为varchar,因此用户也可以输入超过10个字符,因为我收到此错误:

  

溢出了一个int列

由于其他业务支持,我无法将列的数据类型更改为in t。

到目前为止,我已经在检查LEN() < 10之前实施了ISNUMERIC条件,但是寻求是否有其他更好的选择。

1 个答案:

答案 0 :(得分:1)

如果您使用的是Sql server 2012而不是使用 TRY_Convert(),Function.it会将 NULL 作为输出而不是强加错误

double.ToString

否则 将值转换为 bigint 而不是 INT

declare @d varchar(200)='940852774565564'
if ((select ISNUMERIC(@d))=1)
select Try_Convert(@d as bigint)