convert类型转换的问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 22:46:29
declare @pass numeric(4,1)--通过人数
declare @all numeric(4,1)--总人数
set @pass = 3.0
set @all = 5.0

select 总人数=@pass,通过人数=@all
,通过率=(convert(varchar(5),@pass/@all*100)+'%')

我想输入通过率为60%
错误提示:将 numeric 转换为数据类型 varchar 时出现算术溢出错误。

请问我该怎么办?

declare @pass numeric(4,1)--通过人数
declare @all numeric(4,1)--总人数
set @pass = 3.0
set @all = 5.0

select 总人数=@pass,通过人数=@all
,通过率=(convert(varchar(20),@pass/@all*100)+'%')

把varchar的长度加大一些

declare @pass numeric(4,1)--通过人数
declare @all numeric(4,1)--总人数
set @pass = 3.0
set @all = 5.0

select 总人数=@pass,通过人数=@all
,通过率=cast(cast(ROUND((@pass/@all)*100,2) as decimal(5,2)) as varchar(10))+'%'

你所出现的错误是因为@pass/@all时小数有6位,再加上整数部分,你算算几位,可是你转型时varchar(5),肯定溢出了,你改成varchar(50)看看