3
ほとんどの句で列エイリアスの使用を許可しないような方法でクエリが解析されるのはなぜですか?
クエリを記述しようとすると、SQL Serverはクエリを実行するときにSELECTを解析する前に、クエリ内のWHEREを解析する(難しい方法)ことがわかりました。 MSDNドキュメントは、一般的な論理解析順序はSELECTは(したがって、「そのようなオブジェクト[別名」エラーは他の句の列別名を使用しようとしない場合に得られた)、ほぼ最後に解析されるようなものであると言います。エイリアスをどこでも使用できるようにする提案もありましたが、MicrosoftチームはANSI規格への準拠の問題を挙げてこれを打ち倒しました(この動作はANSI規格の一部であることを示唆しています)。 プログラマー(DBAではない)として、この動作がやや紛らわしいことに気づきました。列エイリアスを持つという目的を大幅に無効にしているように思われるためです(少なくとも、列エイリアスは、実際にエイリアスを使用できる場所はORDER BY のみであるため、クエリの実行の早い段階で解析されます)。プログラマーとしては、クエリをより強力で便利に、そしてDRYにする大きな機会を逃しているようです。 それは理にかなっているほど明白な問題のように見えますが、SELECTとORDER BY以外では列エイリアスを許可しないことを決定する他の理由がありますが、それらの理由は何ですか?
16
sql-server
alias