我需要在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.