oracle中如何选择两列比较为一列
Posted
技术标签:
【中文标题】oracle中如何选择两列比较为一列【英文标题】:How to select the comparison of two columns as one column in Oracle 【发布时间】:2011-06-17 04:45:38 【问题描述】:我不知道如何在我的 SELECT 查询中添加一列来指示两列是否包含 Oracle 中的相同数据。
我想写一个这样的查询:
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 |
+---------+---------+-----------------+
执行此操作的正确语法是什么?
【问题讨论】:
无论出于何种原因,Oracle SQL 不像 mysql 那样具有布尔数据类型。我真的很想知道为什么。 whell, true|false, 0|1, 不管是什么意思:) 【参考方案1】:几年前我停止使用DECODE
,因为它不便携。此外,它不如CASE/WHEN
灵活和可读性差。
然而,你可以对 decode 做一个巧妙的“技巧”,因为它是如何处理 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
【讨论】:
【参考方案2】:如果您也想考虑空值相等,请尝试以下操作
select column1, column2,
case
when column1 is NULL and column2 is NULL then 'true'
when column1=column2 then 'true'
else 'false'
end
from table;
【讨论】:
【参考方案3】:select column1, coulumn2, case when colum1=column2 then 'true' else 'false' end from table;
HTH
【讨论】:
短小精悍!以上是关于oracle中如何选择两列比较为一列的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView 默认为一列,我如何获得两列?