昨天一位同事向我展示了以下postgres查詢。我們都驚訝的是它的工作:SELECT * vs SELECT *
SELECT* FROM mytable;
因爲我最近編碼爲另一種語言解析器,我想更深入地瞭解爲什麼這個查詢「編譯」,並返回相同的結果SELECT * FROM mytable;
。
據推測,這是因爲在詞法分析識別爲有效查詢,Postgres的從輸入讀取SELECT
作爲標記,然後搜索下一個標記,它發現爲*
,等等 - 是或多或少什麼在這裏?
此外,postgres詞法分析器/解析器是否剛好足夠強大以理解此查詢,或者其他數據庫是否會理解類似的SELECT*
查詢?
作品也沒有在Oracle APEX。 – Jacob
不知道APEX與它有什麼關係。 –
您是否因數據庫接受「SELECT *」而不管間距如何而感到困惑,還是您對「SELEcT *」被接受而不管間距如何感到驚訝?後者是編程語言的一般標準;空白通常是可選的。我不知道數據庫廠商中有多少常見的「SELECT *」,但說的很清楚。 –