SQL Server的ISNUMERIC函数

前端之家收集整理的这篇文章主要介绍了SQL Server的ISNUMERIC函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在sql Server 2012中检查数字与否的列.

这是我的案例代码.

CASE
    WHEN ISNUMERIC(CUST_TELE) = 1 
      THEN CUST_TELE 
      ELSE NULL 
END AS CUSTOMER_CONTACT_NO

但是当达到’78603D99’值时,它返回1,这意味着sql Server将此字符串视为数字.

这是为什么?

如何避免这种问题?

解决方法

不幸的是,sql Server中的ISNUMERIC()函数有许多怪癖.它并不完全是错误的,但它很少会在人们第一次使用它时达到预期效果.

但是,由于您使用的是sql Server 2012,因此您可以使用TRY_PARSE()函数来执行您想要的操作.

这返回NULL:
SELECT TRY_PARSE(‘7860D399’AS int)

返回7860399
SELECT TRY_PARSE(‘7860399’AS int)

https://msdn.microsoft.com/en-us/library/hh213126.aspx

显然,这也适用于除INT之外的数据类型.你说你想检查一个值是数字,但我认为你的意思是INT.

猜你在找的MsSQL相关文章