昨日、同僚が私に次のpostgresクエリを示しました。SELECT *対SELECT *
SELECT* FROM mytable;
を私は最近、私はなぜこのクエリは「コンパイル」より深く理解しようとSELECT * FROM mytable;
と同じ結果を返しています、別の言語用のパーサをコード化されたので:我々は両方それが働いていたことに驚きました。おそらくこれが原因で字句解析時に有効なクエリとして認識されている
、Postgresはトークンとして入力からSELECT
読み込み、それが*
として見つかった次のトークン、を検索し、というように - である多かれ少なかれ何ここにいるの?
また、postgres lexer/parserはこのクエリを理解するのに十分な堅牢性を持っていますか、他のデータベースで同様のSELECT*
クエリを理解していますか?
作品、ここで
は、SELECT文のBNFです。 – Jacob
APEXとの関係は不明です。 –
スペースにかかわらずDBが「SELECT *」を受け入れるという事実、またはスペースに関係なく「SELEcT *」が受け入れられることに驚いていますか?後者は一般的なプログラミング言語の標準です。空白は一般的にオプションです。私はデータベースベンダーの間でどのように「SELECT *」が共通しているのか分かりませんが、それは十分明確です。 –