我有一个要求,我必须检查VARCHAR(200)
列中输入的值是否为数字,如果是,则应传递相关的错误消息。
我正在使用ISNUMERIC
函数进行验证,因为我的列值为varchar
,因此用户也可以输入超过10个字符,因为我收到此错误:
溢出了一个int列
由于其他业务支持,我无法将列的数据类型更改为in
t。
到目前为止,我已经在检查LEN() < 10
之前实施了ISNUMERIC
条件,但是寻求是否有其他更好的选择。
答案 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)