sql - Sql Server 2000 中类型的算术溢出错误

标签 sql sql-server sql-server-2000

在 SQL SERVER 2000 表中,有一列名为 Kpi 的 float 类型。 当尝试将该列转换为 varchar(cast(kpi as varchar(3))) 时,会出现错误

Msg 232, Level 16, State 2, Line 1
Arithmetic overflow error for type varchar, value = 26.100000.

问题是该列只有一个不同的值,即 26.1。 我不明白为什么在将其转换为 varchar 时显示错误!

最佳答案

您的错误是由 26.1 中的句号触发的。

您已应用此命令:

cast(kpi as varchar(3))

首先:将转换从 varchar(3) 更改为 varchar(4)(以获取句号后的第一个值)

所以你会得到:

此行将值 26.10000000 转换为 26.1

那么你应用的varchar(26.1)不正确!

Varchar 类型只需要整数值作为大小。

为什么应用最后一个 varchar?我认为你必须删除外部 varchar 并只保留强制转换函数

关于sql - Sql Server 2000 中类型的算术溢出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296974/

相关文章:

sql-server - 使用 NEWID() 使用随机数据更新表不起作用

sql - 表值函数 我的查询计划去哪儿了?

sql - 列插入或更新与先前的 CREATE RULE 语句施加的规则冲突

java - 如何在不使用 SQLiteOpenHelper 内容提供程序插入数据的情况下获取 URI? (安卓)

mysql - SQL 查询以选择其他行不等于值的位置

MySql 在存储过程中的 IF THEN END IF 中使用 OR

php - SQL search 查询匹配数组至少一半的关键字

mysql - 通过自定义 SQL 语句获取匹配 2 个不同类别的 Wordpress 帖子

sql - 如果没有 CASE 语句,值为 0 则返回 1

sql - 合并到多个更新和插入