Sql 如何在Oracle中将两列的比较选择为一列
我不知道如何向SELECT查询中添加一列,以指示Oracle中的两列是否包含相同的数据 我想写一个如下的查询:Sql 如何在Oracle中将两列的比较选择为一列,sql,oracle,select,Sql,Oracle,Select,我不知道如何向SELECT查询中添加一列,以指示Oracle中的两列是否包含相同的数据 我想写一个如下的查询: select column1, column2, column1=column2 from table 如果我有这张桌子: +---------+---------+ | column1 | column2 | +---------+---------+ | value1 | value1 | | value2 | value3 | | value4 | value4 |
select column1, column2, column1=column2 from table
如果我有这张桌子:
+---------+---------+
| column1 | column2 |
+---------+---------+
| value1 | value1 |
| value2 | value3 |
| value4 | value4 |
+---------+---------+
得到如下结果:
+---------+---------+-----------------+
| column1 | column2 | column1=column2 |
+---------+---------+-----------------+
| value1 | value1 | true |
| value2 | value3 | false |
| value4 | value4 | true |
+---------+---------+-----------------+
执行此操作的正确语法是什么
select column1, coulumn2, case when colum1=column2 then 'true' else 'false' end from table;
Hth
< P>如果你也想考虑空值相等,试试下面的select column1, column2,
case
when column1 is NULL and column2 is NULL then 'true'
when column1=column2 then 'true'
else 'false'
end
from table;
几年前我停止使用
DECODE
,因为它不可移植。此外,它的灵活性和可读性也不如CASE/WHEN
时
然而,有一个巧妙的“技巧”你可以做解码,因为它如何处理空。在解码中,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
无论出于何种原因,Oracle SQL不像MySQL那样具有布尔数据类型。我真想知道为什么。whell,true | false,0 | 1,他们的意思是什么:)又短又好!