tôi bơ ngón tay một truy vấn trong SQL Server 2000 và thêm một khoảng thời gian ở giữa của tên bảng:Tại sao SQL Server 2000 xử lý kiểm tra SELECT. * Và SELECT t.est. * Giống nhau?
SELECT t.est.* FROM test
Thay vì:
SELECT test.* FROM test
Và truy vấn vẫn được thực thi một cách hoàn hảo. Thậm chí SELECT t.e.st.* FROM test
thực hiện mà không có vấn đề.
Tôi đã thử cùng truy vấn trong SQL Server 2008 nơi truy vấn không thành công (lỗi: tiền tố cột không khớp với tên bảng hoặc bí danh được sử dụng trong truy vấn). Vì lý do tò mò tinh khiết, tôi đã cố gắng tìm ra cách SQL Server 2000 xử lý các tên bảng theo cách cho phép truy vấn bơ được chạy, nhưng tôi chưa có nhiều may mắn cho đến nay.
Mọi chuyên gia sql đều biết tại sao SQL Server 2000 chạy truy vấn mà không có vấn đề?
Cập nhật: Các truy vấn xuất hiện để làm việc không phụ thuộc vào giao diện sử dụng (ví dụ Enterprise Manager, SSMS, OSQL) và như Jhonny chỉ ra bên dưới nó kỳ lạ thậm chí làm việc khi bạn cố gắng:
SELECT TOP 1000 dbota.ble.* FROM dbo.table
Nếu Tôi đã phải mạo hiểm một dự đoán là bởi vì SQL có truy vấn của bạn như là một gợi ý. Để đảm bảo rằng các kết quả được trả về theo cách hiệu quả nhất, nó nhìn vào truy vấn của bạn và thay đổi nó để làm cho nó hoạt động tốt hơn. Trong ví dụ của bạn, bí danh là không quan trọng vì nó là một bảng * TỪ ... Mặc dù tôi không có cách nào chứng minh điều này (do đó nhận xét và không trả lời) Bạn có thể thử tham gia để bạn có 2 bảng và thử nghiệm nó như thế không? nếu có cơ hội cho sự mơ hồ, nó có thể bắt đầu quan tâm nhiều hơn. – Shaded
Bạn cũng đã khiến tôi tò mò! Tôi không có một trường hợp SQL Server 2000 để tay tại mo, nhưng am hấp dẫn ... – AdaTheDev
@Shaded, tôi đã nghĩ bạn có thể đã nhấn vào giải pháp nhưng nó xuất hiện rằng nó hoạt động ngay cả khi nhiều bảng có mặt trong truy vấn . Truy vấn này cũng hoạt động mà không có vấn đề: 'SELECT t.est. *, T.est2. * FROM test, test2'. Tôi cũng đã cố gắng bên trong tham gia một vài bảng để đảm bảo và cũng chạy tốt. –