เหตุใดข้อความค้นหาจึงถูกแยกวิเคราะห์ในลักษณะที่ไม่อนุญาตให้ใช้ชื่อแทนคอลัมน์ในส่วนใหญ่
ในขณะที่พยายามเขียนแบบสอบถามฉันพบ (วิธีที่ยาก) ที่ SQL Server แยกวิเคราะห์ WHEREs ในแบบสอบถามนานก่อนที่จะแยกวิเคราะห์ SELECT เมื่อดำเนินการแบบสอบถาม เอกสาร MSDNกล่าวว่าเพื่อแยกทั่วไปตรรกะเป็นเช่นนั้น SELECT จะแยกกันเกือบที่ผ่านมา (จึงทำให้เกิดการ "ไม่มีวัตถุเช่น [นามแฝง]" ข้อผิดพลาดเมื่อพยายามที่จะใช้นามแฝงคอลัมน์ในข้ออื่น ๆ ) มีแม้กระทั่งข้อเสนอแนะเพื่อให้สามารถใช้นามแฝงได้ทุกที่ซึ่งทีมงานของ Microsoft อ้างถึงปัญหาการปฏิบัติตามมาตรฐาน ANSI (ซึ่งแสดงให้เห็นว่าพฤติกรรมนี้เป็นส่วนหนึ่งของมาตรฐาน ANSI) ในฐานะโปรแกรมเมอร์ (ไม่ใช่ DBA) ฉันพบว่าพฤติกรรมนี้ค่อนข้างสับสนเนื่องจากดูเหมือนว่าฉันจะเอาชนะจุดประสงค์ของการมีชื่อแทนคอลัมน์เป็นส่วนใหญ่ (หรืออย่างน้อยที่สุดนามแฝงคอลัมน์อาจทำให้มีประสิทธิภาพมากขึ้นหากพวกเขาเป็น แยกวิเคราะห์ก่อนหน้านี้ในการดำเนินการค้นหา) เนื่องจากสถานที่เดียวที่คุณสามารถใช้นามแฝงที่แท้จริงคือในการสั่งซื้อ ในฐานะโปรแกรมเมอร์ดูเหมือนว่าจะไม่มีโอกาสมากสำหรับการทำแบบสอบถามที่มีประสิทธิภาพสะดวกและแห้งมากขึ้น ดูเหมือนว่ามันเป็นปัญหาที่เห็นได้ชัดว่ามันมีเหตุผลแล้วว่ามีเหตุผลอื่น ๆ สำหรับการตัดสินใจว่าชื่อแทนคอลัมน์ไม่ควรได้รับอนุญาตในสิ่งอื่นใดนอกเหนือจาก SELECT และ ORDER BY แต่เหตุผลเหล่านั้นคืออะไร