2013-06-12 123 views
-1

今天我發現這個select語句在oracle中是有效的。Oracle select語句語法

select * from table where col=(value) 

和equivelant這個

select * from table where col=value 

有人能解釋一下嗎?

+8

有沒有語言'(1 + 1)'不等於'1 + 1'? – Andomar

+0

只有會計師會認爲'(價值)'等價於'-value' :) –

+0

Jeffrey在我q中,我暗示了這一點?無論如何,感謝你的建設性指導。 – gefrag

回答

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

+0

是的,我知道操作的順序。也許這只是看起來有點奇怪,當我看到聲明,發佈q之前並沒有真正想過很多。不管怎麼說,還是要謝謝你 – gefrag

1

不知道你在找什麼解釋。如果你的意思是爲什麼col = value和col =(value)是相同的,那麼這不僅在oracle中,而且在大多數其他dbs sql查詢中都是完全有效的。當你需要類似的情況時,考慮下面的情況。

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