VARCHAR上的ISNUMERIC列返回的数字仍然是?

时间:2015-12-17 22:28:23

标签: sql sql-server sql-server-2008 slash isnumeric

为什么ISNUMERIC = 0返回带空格和'/'的数字? 这是SQL Server 2008 R2 BTW

谢谢大家,

代码示例:

  SELECT A AS 'VARCHARCOLUMN' FROM TABLE
    WHERE ISNUMERIC(A) = 0

    TABLE Structure:
    ----------------------
        A  |   B    |   C   |
    ----------------------
      x    |        |       |
      .    |        |       |
      p    |        |       |
     1 7/2 |        |       |
     15.   |        |       |
      5    |        |       |


      Result set:
   ----------------------
        A  |   B    |   C   |
    ----------------------
      x    |        |       |
      p    |        |       |
     1 7/2 |        |       | <- Why is this returned???

2 个答案:

答案 0 :(得分:0)

因为这些都不算数字。值'1 7/2'不是数值 - 它是一个字符串(斜杠和空格是非数字的)。

答案 1 :(得分:0)

当表达式是有效的数字类型时,SQL Server中的IsNumeric函数仅返回true。它并不理解表达式是1和7的八分之一。它将此视为一个字符串。 MSDN IsNumeric Reference