VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1541|回复: 5

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

[复制链接]

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-2 17:30:01 | 显示全部楼层 |阅读模式

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

哪位给讲讲 ?

回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-2 21:09:01 | 显示全部楼层
sql语句里的count()是统计记录的汇总数,()里可以是字段名也可以是*

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

sqlcode的值为100时,是执行的SQL语句没有返回任何结果
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-4 18:15:01 | 显示全部楼层
数据库不同,效果也不一样吧?
我用Sybase ASE和Sybase ASA
不管是count(*) 还是count(1)
未检索到数据时均有返回值:0
回复

使用道具 举报

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-5 09:03:01 | 显示全部楼层
我用的是ASA 8.0
回复

使用道具 举报

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-5 09:24:01 | 显示全部楼层
奇怪,在isql里面试了试,也都是看到 0 . 难道是我的代码错了?
回复

使用道具 举报

2

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-5-8 11:30:01 | 显示全部楼层
找到原因了, select count(),列名需要group by ,则 找不到记录就会出现返回码100, count(1) count(列名)都一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表