关于SELECT GROUP BY字段为''时的问题

甘泉123 2009-07-17 10:38:36
比如现在有个表A,里边三个字段b、c、d

select max(b),max(c) from A group by d
没问题,结果正确

select max(b)+max(c) as x from A group by d
当b、c都不为''的时候,没问题
一旦b、c有一个是'',那么相加得到的结果就是''
(b\c字段不是null,insert的时候赋的是'')


请教各位高手,这是怎么回事呢?呵呵~
...全文
75 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
甘泉123 2009-07-17
  • 打赏
  • 举报
回复
insert into A (b,c,d) values ('','','')
这样的语句,b\c\d应该都是'',而不是null吧?
甘泉123 2009-07-17
  • 打赏
  • 举报
回复
对呀,那我的字段应该不是null呀,呵呵~
我insert的时候确实是赋的'',但+出来为什么就变成''了呢~

就是说 a+'' 应该等于 a ,而不等于'',对吧?呵呵~
feixianxxx 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feixianxxx 的回复:]
引用 6 楼 ganq 的回复:
兄弟还是有一事不明,varchar字段中,null和''一样吗?是否都能用isnull来判断?

当然不一样 NULL是未知 不是值 ''是值
我们经常会用 isnull(字段名,'')
[/Quote]
isnull(字段名,'')是为了防止 'a'+null =null这种情况发生
用了a+isnull(字段名,'') =a
--小F-- 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ganq 的回复:]
兄弟还是有一事不明,varchar字段中,null和''一样吗?是否都能用isnull来判断?
[/Quote]
不一样 ''用case when 吧
ISNULL
使用指定的替换值替换 NULL。

语法
ISNULL ( check_expression , replacement_value )

参数
check_expression

将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

replacement_value

在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。
feixianxxx 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ganq 的回复:]
兄弟还是有一事不明,varchar字段中,null和''一样吗?是否都能用isnull来判断?
[/Quote]
当然不一样 NULL是未知 不是值 ''是值
我们经常会用 isnull(字段名,'')
甘泉123 2009-07-17
  • 打赏
  • 举报
回复
兄弟还是有一事不明,varchar字段中,null和''一样吗?是否都能用isnull来判断?
--小F-- 2009-07-17
  • 打赏
  • 举报
回复
select 100+null 

/*NULL

(1 行受影响)*/
--小F-- 2009-07-17
  • 打赏
  • 举报
回复
数值+null=null
--小F-- 2009-07-17
  • 打赏
  • 举报
回复
select 100+null

/*NULL

(1 行受影响)*/
SQL77 2009-07-17
  • 打赏
  • 举报
回复
CASE WHEN 判断下
--小F-- 2009-07-17
  • 打赏
  • 举报
回复
select isnull(max(b),0)+isnull(max(c),0) as x from A group by d 

34,576

社区成员

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

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