Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中将两列的比较选择为一列_Sql_Oracle_Select - Fatal编程技术网

Sql 如何在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查询中添加一列,以指示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            |
+---------+---------+-----------------+
执行此操作的正确语法是什么

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,他们的意思是什么:)又短又好!