zoukankan      html  css  js  c++  java
  • 这是SQL Server的bug么?

    在论坛上看到这样一个帖子, 原文如下:




    在我的SQL Server2008R2上, 试了一下, 果然是这样, 转换成numeric时报错..

    看样子很奇怪, 明明函数ISNUMBERIC的返回值是1, 但是转换却不成功, 为什么呢?

    查了一下BOL, 发现如下的解释:

    ISNUMBERIC函数判断表达式是否是以下类型之一:

    int real

    numeric bigint 

    money smallint 

    smallmoney tinyint 

    float decimal 


    看样子ISNUMBERIC不只判断是否是NUMBERIC类型, 也判断其他如money等类型.

    试了一下转换成money型, 结果就没有报错, 语句如下:

    SELECT cast('14,3434' AS money);

    另外如果有$符号, 也是可以转换成功的, 语句如下:

    SELECT ISNUMERIC('$123');
    SELECT cast('$123' AS money);


    总结一下, 这不是SQL Server的bug, 只是用户容易从函数ISNUMBERIC望文生义, 以为这个函数返回1的表达式一定是可以转化为NUMBERIC型的. 其实能转换为money而不能转化为numberic型的表达式, 用ISNUMBERIC判断也是返回1的.

  • 相关阅读:
    Array.sort源码
    Linkedlist源码
    最大公约数 2.7
    腾讯笔试题
    腾讯2014校园招聘笔试题
    指针问题
    JavaScript 日历
    QT 初阶 第二章 创建对话框(查找对话框实例)
    QT 初阶 1.3 节 控件的几何排列
    “项目中的问题”
  • 原文地址:https://www.cnblogs.com/qanholas/p/2487559.html
Copyright © 2011-2022 走看看