怎样把一条SQL语句查询出的结果集中的空值替换成0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样把一条SQL语句查询出的结果集中的空值替换成0相关的知识,希望对你有一定的参考价值。

关键是我不知道是哪个为空,而且有很多字段,怎么办?

在Sql2000中
假设有这么一张表
create table test
(
id int,
name varchar(32),
sex char
)
那么查询可以用
select * from test where id is null or name is null or sex is null
有些东西是不能为空的,所以LZ有很多字段的话可以挑选出那些可能为空的,其余在建立表时就应当设置为非空拉

如果在Oracle中有个 nvl(exp1,exp2)函数,
可以用来判断是否为空,如果exp1为空的话,则显示exp2中的字符
select nvl(id,'空'),nvl(name,'空'),nvl(sex,'空') from name

望能看到更好的办法.
参考技术A 如果你是SQL 数据库:
有一表Table,字段:ID,name(字符型),如果字段name为空NULL或为空字符‘’的替换为‘0’,用以下语句:
select (CASE when (name IS NULL or name='') then '0' else name end) as name from table
如果name为数据型的,则:
select (CASE when (name IS NULL or name='') then 0 else name end) as name from table
你试试看,我已试过的。
参考技术B 如果是Oracle的话可以用nvl()
比如, 你原本是要SELECT A, B, C FROM.....
就可以写成 SELECT NVL(A, 0), NVL(B, 0), NVL(C, 0) FROM...

当然A,B,C必须都是Number型的
参考技术C 可以用Decode函数,
如:
表名为:test
字段名为:D1
SQL语句如下:
select decode(D1,null,'0',D1) from test;
实现的目的:当D1为null时返回0,else 返回D1本身的值。
关于Decode的用法,到baidu上一搜就有。
参考技术D ISNULL(字段,0)本回答被提问者采纳

sql语句:怎么把一列表里面包含某个字符都改成另外一个字符,就像word里面的替换功能一样的语句

sql语句:怎么把一列表里面包含某个字符都改成另外一个字符,就像word里面的替换功能一样的语句 比如我要把人员表里 工号这一列,所有包含ABC的值,把ABC 替换成123, 如:ABC789 执行语句后替换成123789?

参考技术A update table_name set column=replace(column,'ABC','123')追问

提示关键字'column'附近有语法错误这个column 是什么意思,

追答

列名~~你把表名跟列名都换成你自己的撒 table_name 是表名

本回答被提问者采纳
参考技术B update 人员表 set 工号=replace(工号,'ABC','123')

我擦,一回头一看来个缺心眼的热心网友
他那个你别用哈,用完了你都改不回来追问

呵呵,谢谢,我备份好了的

追答

恩,有备份就行
column就代表列名,也就是你说的工号那列
table_name 就是表名,你都换成你自己的列名表名就OK

参考技术C update 表名称 SET 列名 ='123' WHERE 列名 like'%ABC%'

以上是关于怎样把一条SQL语句查询出的结果集中的空值替换成0的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?

SQL问题求助,查询结果如何清除NULL的空值

如何写sql语句去掉oracle返回结果中的空值(NULL)

Mysql中查询一个表,把结果中的NULL替换成0,请写出sql语句

sql如何把查询到的NULL替换成空值''

sql server 查询 order by 与 union 并替换多个列的空值