关于AVG函数问题

w404333426 2011-10-30 04:52:00
我用AVG函数对分数一列求平均数的时候,提示我说不能对char数据类型求avg
应该怎么破?
...全文
203 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
houyajin 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 suiyanpeng 的回复:]

学习楼上们的
[/Quote]

+
suiyanpeng 2011-10-31
  • 打赏
  • 举报
回复
学习楼上们的
lantian_019 2011-10-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
如果你的char类型的字段存放是的是数值,可以转换后再求.
例如: select avg(cast(col as int)) from tb
[/Quote]
正解
勿勿 2011-10-31
  • 打赏
  • 举报
回复
字符是不能进行avg运算的。必须 case int 后 avg OK??
gogodiy 2011-10-31
  • 打赏
  • 举报
回复
SQL没有现成的分数这个数据类型,所以多半是晴天说的意思,显示的1/3,其实是CHAR类型,需要你先分解后再转换成数值型进行AVG计算。
bushy 2011-10-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qianjin036a 的回复:]

SQL code
declare @fs varchar(10)
set @fs='13/34'
select convert(int,left(@fs,charindex('/',@fs)-1))*1./convert(int,right(@fs,len(@fs)-charindex('/',@fs)))
/*
---------------------------------------
……
[/Quote]赞成,这个说法!
中国风 2011-10-30
  • 打赏
  • 举报
回复
select * from tb where ISNUMERIC(Col)=0


查看一下是否有非数字的字符
-晴天 2011-10-30
  • 打赏
  • 举报
回复
declare @fs varchar(10)
set @fs='13/34'
select convert(int,left(@fs,charindex('/',@fs)-1))*1./convert(int,right(@fs,len(@fs)-charindex('/',@fs)))
/*
---------------------------------------
0.38235294117

(1 行受影响)

*/
-晴天 2011-10-30
  • 打赏
  • 举报
回复
你说的分数列,实际上应该是字符串列,因为在计算机数字表述中没有"分数"的概念.
如果是这样,那要将这个"分数列"分开成分子和分母,将分子除以分母,再求平均值.
w404333426 2011-10-30
  • 打赏
  • 举报
回复
各位大神啊。谁好心留个QQ。求师傅
  • 打赏
  • 举报
回复
把你的char数据 avg(cast(数据 as int))
--小F-- 2011-10-30
  • 打赏
  • 举报
回复
把你的char数据 avg(cast(数据 as int))
dawugui 2011-10-30
  • 打赏
  • 举报
回复
如果你的char类型的字段存放是的是数值,可以转换后再求.
例如: select avg(cast(col as int)) from tb

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧