【问题标题】:SQL server smallmoney data type errorSQL server smallmoney 数据类型错误
【发布时间】:2014-11-21 20:57:10
【问题描述】:
CREATE TABLE GroovyExps_Tgt
      (EMPNO                SMALLINT,
       FIRSTNAME            VARCHAR(20) NOT NULL,
       MIDINIT              CHAR(1) NOT NULL,
       LASTNAME             VARCHAR(15)  NOT NULL,
       SALARY_INT           INT,
       SALARY_Decimal       DECIMAL,
       SALARY_Numeric       NUMERIC,
       SALARY_FLOAT         FLOAT(9), 
       SALARY_MONEY         MONEY,
       SALARY_SMALLMONEY    SMALLMONEY,        
       BIRTHDATE            DATE,       
       HIREDATE_DATETIME    DATETIME,
       JOIN_TIME            TIME,
       JOINTIME             DATETIME) 




insert into GroovyExps_Tgt values(000080,'LEE','B','BRETT',11111111.11111111,
11111111.11111111,11111111.11111111,
11111111.11111111,11111111.11111111,
11111111.11111111,'1985-05-10',
'2014-04-22 20:25:48.002','20:25','2014-04-22 20:25:48.002') 

错误:

消息 8115,级别 16,状态 4,第 1 行算术溢出错误 将数字转换为数据类型 smallmoney。该声明已 终止。

我需要在不改变表定义的情况下将准确的数据插入到表中!!!!

【问题讨论】:

    标签: sql-server-2008 char


    【解决方案1】:

    正如错误消息所示,将字符或字符串值(无论是 char、varchar、nchar 还是 nvarchar 数据类型)转换为 smallmoney 数据类型并且字符值包含无法转换为 smallmoney 的无效字符时会发生此错误数据类型。

    【讨论】:

      【解决方案2】:

      根据你的插入语句 11111111.11111111 这个值你是 用作 smallmoney 值。 Smallmoney 数据类型需要 4 个字节值存储在 -214,748.3648 到 +214,748.3647 的范围内。轮到你了 看到你正在为小钱使用大价值,这就是它给予的原因 你错了。

      【讨论】:

        【解决方案3】:

        问题是值 11,111,111 超过了 smallmoney 的最大允许值,即介于 - 214,748.3648 和 214,748.3647 之间。更多详情可以参考:

        http://msdn.microsoft.com/en-us/library/ms179882.aspx

        如果不更改其定义,则无法在该表中插入该值,使用货币数据类型你可以完成它...你能告诉我你想在那里完成什么,所以我可以更好地帮助你?

        【讨论】:

        • 我应该怎么做才能将该值放入表中.. smallmoney(max) 是否可行,或者我应该只使用 money 数据类型来完成此操作.. 提前致谢..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-19
        • 2012-04-12
        • 2010-12-04
        相关资源
        最近更新 更多