代码之家  ›  专栏  ›  技术社区  ›  James A Mohler Nika

这怎么可能是一个数字?

  •  3
  • James A Mohler Nika  · 技术社区  · 11 年前

    这怎么能被认为是一个数字呢?

    <cfquery name="test">
       SELECT ISNUMERIC("8D4") AS isnum
    </cfquery>
    

    则返回1。

    我还需要进行其他检查吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   Adam Cameron    11 年前

    D E 被视为特殊情况 isNumeric() . E 很容易被证明反映了科学记数法:

    SELECT ISNUMERIC('8E4'), 8E4
    

    结果:

    1    80000
    

    带有的情况 D 不同。网络上的许多资源将其描述为 form of denoting decimal numbers just a form of scientific notation .

    如果将上面的SQL更改为 D 但是:

    SELECT  8E4, 8D4
    

    在SQL Studio中,这将导致:

    (No column Name)    D4
    80000              8
    

    我不是SQL专家(任何方面:我只是一名CFML开发人员),但这表明 D 前面的小数或序列号并不是全部。

    但无论故事是什么,都有充分的证据表明 nDn (其中 n 是数字)是 TRUE ISNUMERIC() .

        2
  •  0
  •   skjcyber    11 年前

    您的参数包含 D 其为十六进制。 8D4 (十六进制)为 2260 (十进制)

    所以这是一个有效的数字,这就是为什么会返回1。