今天发现了个 select count(1) 和 select count( 列名 ) 的区别

变巨 2007-01-01 01:20:24

select count(1) into :str2 from "tongji"
where "xfdate" = :tjrqd and "cardnum" = :str1 ;

select count(xftime) into :str2 from "tongji"
where "xfdate"=:tjrqd and "cardnum" = :str1 ;

如果未检索到数据,sqlcode的返回值不同.

count(1)的返回值是空 ,sqlcode 是100
count(列名)的返回值是0 , sqlcode 是 0

哪位给讲讲 ?

...全文
568 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
变巨 2007-01-05
  • 打赏
  • 举报
回复
找到原因了, select count(),列名需要group by ,则 找不到记录就会出现返回码100, count(1) count(列名)都一样
yuanqi007 2007-01-01
  • 打赏
  • 举报
回复
sql语句里的count()是统计记录的汇总数,()里可以是字段名也可以是*

你用1的话,因为你的表内没有这个字段,所以返回空值

sqlcode的值为100时,是执行的SQL语句没有返回任何结果
变巨 2007-01-01
  • 打赏
  • 举报
回复
奇怪,在isql里面试了试,也都是看到 0 . 难道是我的代码错了?
变巨 2007-01-01
  • 打赏
  • 举报
回复
我用的是ASA 8.0
圣殿骑士18 2007-01-01
  • 打赏
  • 举报
回复
数据库不同,效果也不一样吧?
我用Sybase ASE和Sybase ASA
不管是count(*) 还是count(1)
未检索到数据时均有返回值:0

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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