Oracle select语句语法

时间:2013-06-12 11:28:46

标签: sql oracle

今天我发现这个select语句在oracle中有效。

select * from table where col=(value)

并且平等对待

select * from table where col=value

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:4)

SELECT * FROM DUAL;
/* Result:
"DUMMY"
"X"
*/

SELECT  COUNT(dummy) FROM DUAL WHERE dummy = 'X';
-- 1

SELECT  COUNT(dummy) FROM DUAL WHERE dummy = ('X');
-- 1

SELECT  COUNT(dummy) FROM DUAL WHERE dummy = (((('X'))));
-- 1

SELECT    COUNT(dummy)
FROM      DUAL
WHERE     dummy = 'X'
OR        dummy = ('X')
OR      ( dummy = 'X' OR dummy = ('X'))
OR      ((dummy = 'X' OR dummy = ('X')) AND (1 = 1 OR (1 = 1 OR (1 = 1))));
-- 1
  

(...)括号或括号用于明确表示优先顺序   通过对应首先评估的表达式的部分进行分组。   因此,为了在乘法之前强制加法,我们写(2 + 3)×   4 = 20,并且为了在求幂之前强制加法,我们写(3 +   5)2 = 64。

答案 1 :(得分:1)

不确定您要找的是什么解释。如果你的意思是为什么col = value和col =(value)是相同的,那么这不仅在oracle中完全有效,而且在大多数其他dbs sql查询中也是如此。当你需要类似的情况时,请考虑以下情况。

Select * from table1 where col = (Select max(col2) from table2)