当前位置: 首页 > 面试题库 >

SQL Server的ISNUMERIC函数

徐秋月
2023-03-14
问题内容

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

这是我的案例代码。

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

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

这是为什么?

如何避免这类问题?


问题答案:

不幸的是,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



 类似资料:
  • 描述 (Description) 方法isnumeric()检查字符串是否仅包含数字字符。 此方法仅存在于unicode对象上。 Note - 要将字符串定义为Unicode,只需将“u”前缀添加到赋值的开始引号即可。 以下是示例。 语法 (Syntax) 以下是isnumeric()方法的语法 - str.isnumeric() 参数 (Parameters) NA 返回值 (Return V

  • 问题内容: 是否有像纯JavaScript 一样的功能? 我知道jQuery具有此功能来检查整数。 问题答案: 没有功能类型,但您可以添加自己的功能: 注意:由于不是检查数字的正确方法,因此不应使用它。

  • 问题内容: 什么是mySQL 中SQLServer函数SCOPE_IDENTITY()的等效项? 问题答案: 这是您要寻找的: 为了回应OP的评论,我创建了以下基准测试: 返回: 因此,它使用原始表的,而不使用触发器内部的表。 编辑: 经过所有这些时间,我意识到答案中显示的结果是错误的,尽管最后的结论是正确的。我已将结果更新为正确的值。

  • Python3 字符串 描述 isnumeric() 方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。 注:定义一个字符串为Unicode,只需要在字符串前添加 'u' 前缀即可,具体可以查看本章节例子。 语法 isnumeric()方法语法: str.isnumeric() 参数 无。 返回值 如果字符串中只包含数字字符,则返回 True,否则返回 False 实例 以下

  • 本文向大家介绍SQLServer中merge函数用法详解,包括了SQLServer中merge函数用法详解的使用技巧和注意事项,需要的朋友参考一下 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。 M

  • 问题内容: SQL正在检测以下字符串: ‘07213E71’ 我相信这是因为“ E”被归类为数学符号。 但是,我需要确保仅将整数形式的值返回为True。 我怎样才能做到这一点? 问题答案: 是具有71个零的浮点数7213 您可以使用它来测试整数。有点神秘,但可以工作。 另一个测试是双负数,它只允许数字0到9。 ISNUMERIC有其他问题,这些都返回1: ,,`+``-```