varchar对于sum运算符无效,怎么不改数据库能正确运算?谢谢!

qlkj666 2018-06-30 11:31:01
zhichu和xiaji字段类型为varchar

$query="select sum(zhichu*xiaji) from shouruzc where id>0";
$result=mysql_fetch_array(mysql_query($query));

$result6[0]得不到sum(zhichu*xiaji) 的和


改成:
$query="select sum(cast(zhichu as bigint)*cast(xiaji as bigint)) from shouruzc where id>0";

还是没用,求高手帮忙,谢谢!
...全文
1316 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-06-30
  • 打赏
  • 举报
回复
先确认相关字段的内容都是数字串
然后 select sum(ifnull(zhichu,0)*ifnull(xiaji,0)),sum(ifnull(zhichu2,0)*ifnull(xiaji,0)) from shouruzc where id>0
qlkj666 2018-06-30
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
mysql 也是有限弱类型的,比如
[ select '2'*'3' as a ]
a
6
但是对于空值(null)不能做出变通响应
所以如果 zhichu和xiaji字段允许为空,且值为空或非数字串时,就不能在数学运算时达到正确的结果


$query="select sum(zhichu*xiaji),sum(zhichu2*xiaji) from shouruzc where id>0";
$result=mysql_fetch_array(mysql_query($query));

有好几个sum()……
然后:
echo "$result6[0] $result6[1]";

怎么实现?谢谢!
xuzuning 2018-06-30
  • 打赏
  • 举报
回复
mysql 也是有限弱类型的,比如
[ select '2'*'3' as a ]
a
6
但是对于空值(null)不能做出变通响应
所以如果 zhichu和xiaji字段允许为空,且值为空或非数字串时,就不能在数学运算时达到正确的结果
qlkj666 2018-06-30
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
先确认相关字段的内容都是数字串
然后 select sum(ifnull(zhichu,0)*ifnull(xiaji,0)),sum(ifnull(zhichu2,0)*ifnull(xiaji,0)) from shouruzc where id>0


成了,谢谢!

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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