Vit*_*lio 36 sql oracle select
我无法弄清楚如何在SELECT查询中添加一个列,指示两列是否在Oracle中包含相同的数据.
我想写一个像这样的查询:
select column1, column2, column1=column2 from table
Run Code Online (Sandbox Code Playgroud)
如果我有这张桌子:
+---------+---------+
| column1 | column2 |
+---------+---------+
| value1 | value1 |
| value2 | value3 |
| value4 | value4 |
+---------+---------+
Run Code Online (Sandbox Code Playgroud)
得到一个结果:
+---------+---------+-----------------+
| column1 | column2 | column1=column2 |
+---------+---------+-----------------+
| value1 | value1 | true |
| value2 | value3 | false |
| value4 | value4 | true |
+---------+---------+-----------------+
Run Code Online (Sandbox Code Playgroud)
这样做的正确语法是什么?
vc *_* 74 61
如果您还要考虑空值相等,请尝试以下操作
select column1, column2,
case
when column1 is NULL and column2 is NULL then 'true'
when column1=column2 then 'true'
else 'false'
end
from table;
Run Code Online (Sandbox Code Playgroud)
Ron*_*nis 11
DECODE几年前我停止使用,因为它不便携.此外,它不如a的灵活性和可读性差CASE/WHEN.
但是,有一个巧妙的"技巧",你可以用解码,因为它处理NULL.在解码中,NULL等于NULL.可以利用它来判断两列是否不同,如下所示.
select a, b, decode(a, b, 'true', 'false') as same
from t;
A B SAME
------ ------ -----
1 1 true
1 0 false
1 false
null null true
Run Code Online (Sandbox Code Playgroud)
select column1, coulumn2, case when colum1=column2 then 'true' else 'false' end from table;
Run Code Online (Sandbox Code Playgroud)
HTH
| 归档时间: |
|
| 查看次数: |
133102 次 |
| 最近记录: |