加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL Server的ISNUMERIC函数

发布时间:2020-12-12 06:31:26 所属栏目:MsSql教程 来源:网络整理
导读:我需要在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 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读