oracle数据库中我想将a表中的b列结果为负数的转换成0,或者特定的一个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库中我想将a表中的b列结果为负数的转换成0,或者特定的一个数相关的知识,希望对你有一定的参考价值。

oracle数据库中我想将a表中的b列为负数的结果转换成0,或者特定的一个数,如-1
查询检验普通结果表,检验结果这列中的结果有负数就输出0,或者特定的值

update a set b=0(或者是特定的值) where b<0;追问

不是更改数据库里面的数据,而是在plsql里面提取数据,做成报表

追答

那就用decode和sign函数
select decode(sign(b),-1,0(或者是特定的值),b) from a;

追问

sign是要附特定的值,我要把检验普通结果表中检验结果这个字段中结果为负数(并没有固定,而是只要是负数就要转换)的转换成0

追答

sign(参数1),如果参数1为正数,返回1;如果参数1为负数,返回-1;如果参数1为0,返回0;
decode(参数1,参数2,参数3,参数4) 意思就是如果参数1等于参数2则参数3,否则参数4。
decode(sign(b),-1,0(或者是特定的值),b)

sign(b)就是参数1
-1就是参数2
0(或者是特定的值)就是参数3
b就是参数4
意思就是如果sign(b)=-1(b为负数),我就显示0或者是特定的值,如果b是正数我就直接现实b。
还有什么疑问

参考技术A case b
when b<0 then

b = o

eles

b

end追问

语句都不能用的,能写详细点吗

参考技术B CASE WHEN追问

decode怎么判断他是负数?

追答

没看清
SELECT A.NUMBER,
CASE
WHEN A.Qty < 500 THEN
0
ELSE
A.QTY
END AS QTY
FROM TABLE A

追问

你那个a.number是那个字段?我安装你这个写提示类型不一致因为number实为char

追答

你就那个表里面的随便一个字段吧

以上是关于oracle数据库中我想将a表中的b列结果为负数的转换成0,或者特定的一个数的主要内容,如果未能解决你的问题,请参考以下文章

oracle中,查询结果去除重复列,插入到新表中

Oracle过程增加字符串数据类型并将其存储为表中的列之一

将oracle 查询结果列拼接为字符串

oracle语句,我想查询A表中的a字段下的值不等于B表中b的值的数据,

使用同一列中的值更新表中的唯一列

在oracle中将结果集中的一个列数据复制到另一个表中的列