[MySQL]使用select,当字段为NULL是返回0否则返回1,SQL怎么写?

fibbery 2007-12-24 10:48:39
有这样一个需求,比如一个表有col1,col2,col3字段,
但是这几个字段不一定都有值,即可以为NULL,使用
select语句实现,如下数据情况时:
col1,col2,col3
"abc","def",NULL
NULL,"abc",NULL
"abc",NULL,NULL
返回
1,1,0
0,1,0
1,0,0
请问,这个sql语句怎么写?谢谢!
...全文
3021 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
成都-狗蛋儿 2011-09-07
  • 打赏
  • 举报
回复
select ifnull(null,0)
fibbery 2007-12-25
  • 打赏
  • 举报
回复
累晕了,发现上面加上我才两位!
fibbery 2007-12-25
  • 打赏
  • 举报
回复
多谢两位
懒得去死 2007-12-24
  • 打赏
  • 举报
回复
是语法组合
fibbery 2007-12-24
  • 打赏
  • 举报
回复
就当作是散分贴吧,欢迎大家提供各种解决方法。

to yueliangdao:

case when ...
是一个语法还是语法组合?
懒得去死 2007-12-24
  • 打赏
  • 举报
回复


create table tt(
col1 char(3),
col2 char(3),
col3 char(3))
engine myisam default charset utf8;
insert into tt
values
("abc","def",NULL),
(NULL,"abc",NULL),
("abc",NULL,NULL);
select
(case when col1 is null then 0 else 1 end)as col1,
(case when col2 is null then 0 else 1 end)as col2,
(case when col3 is null then 0 else 1 end)as col3
from tt;


query result(3 records)
col1 col2 col3
1 1 0
0 1 0
1 0 0
fibbery 2007-12-24
  • 打赏
  • 举报
回复
已经解决了!
select if(isnull(col),0,1) as col ....
懒得去死 2007-12-24
  • 打赏
  • 举报
回复
也和程序中的switch case 结构类似
有两种形式

mysql> set @t = 4;
Query OK, 0 rows affected (0.00 sec)

mysql> select case @t when 1 then 1 else 3 end;
+----------------------------------+
| case @t when 1 then 1 else 3 end |
+----------------------------------+
| 3 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select case when @t=1 then 1 else 3 end;
+----------------------------------+
| case when @t=1 then 1 else 3 end |
+----------------------------------+
| 3 |
+----------------------------------+
1 row in set (0.00 sec)
懒得去死 2007-12-24
  • 打赏
  • 举报
回复
case when 就和
if then
结构一样的。你看看手册就很明白了。
fibbery 2007-12-24
  • 打赏
  • 举报
回复
那您就多说两句呗,显然我不是很明白!

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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