小编典典

SQL Server的ISNUMERIC函数

sql

我需要检查SQL Server 2012中是否为数字的列。

这是我的案例代码。

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

但是,当'78603D99'达到该值时,它将返回1,这表示SQL Server将此字符串视为数字。

这是为什么?

如何避免这类问题?


阅读 338

收藏
2021-03-23

共1个答案

小编典典

不幸的是,ISNUMERIC()SQL Server中的功能有许多怪癖。它并不完全是越野车,但很少能像人们初次使用它时所期望的那样。

但是,由于您使用的是SQL Server 2012,因此可以使用该TRY_PARSE()功能执行所需的操作。

这将返回NULL: SELECT TRY_PARSE('7860D399' AS int)

这将返回7860399 SELECT TRY_PARSE('7860399' AS int)

https://msdn.microsoft.com/zh-
CN/library/hh213126.aspx

显然,这也适用于其他数据类型INT。您说您想检查一个数值是否为数字,但我想您的意思是INT

2021-03-23