加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MsSql > 正文

SQL Server的ISNUMERIC函数

发布时间:2020-05-24 15:46:17 所属栏目: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.

(编辑:安卓应用网)

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

    推荐文章
      热点阅读