ich eine Abfrage in SQL Server 2000 und hat eine Periode, in der Mitte des Tabellennamen Butter-Finger:Warum behandelt SQL Server 2000 SELECT test. * Und SELECT t.est. * Das gleiche?
SELECT t.est.* FROM test
Statt:
SELECT test.* FROM test
Und die Abfrage immer noch perfekt ausgeführt. Sogar SELECT t.e.st.* FROM test
wird ohne Problem ausgeführt.
Ich habe die gleiche Abfrage in SQL Server 2008 versucht, wo die Abfrage fehlschlägt (Fehler: das Spaltenpräfix stimmt nicht mit einem Tabellennamen oder Alias in der Abfrage verwendet). Aus Gründen der reinen Neugierde habe ich versucht herauszufinden, wie SQL Server 2000 die Tabellennamen so behandelt, dass die Butter-Finger-Abfrage ausgeführt werden kann, aber bisher hatte ich nicht viel Glück.
Alle SQL-Gurus wissen, warum SQL Server 2000 die Abfrage ohne Problem ausgeführt hat?
aktualisieren: Die Abfrage erscheint unabhängig von der Schnittstelle (zB Enterprise Manager, SSMS, OSQL) und als Jhonny wies darauf hin, darunter auch funktioniert bizarr verwendet zu arbeiten, wenn Sie versuchen:
SELECT TOP 1000 dbota.ble.* FROM dbo.table
Wenn Ich musste eine Vermutung wagen, weil SQL deine Anfrage als Vorschlag nimmt. Um sicherzustellen, dass die Ergebnisse auf die effizienteste Art und Weise zurückgegeben werden, wird Ihre Abfrage untersucht und geändert, damit sie besser funktioniert. In Ihrem Beispiel ist der Alias unwichtig, da es eine * FROM-Tabelle ist ... Obwohl ich keine Möglichkeit habe, dies zu beweisen (also kommentieren und nicht antworten) Könnten Sie versuchen, einen Join zu machen, so dass Sie 2 Tabellen haben und es so testen? Wenn es eine Chance für Mehrdeutigkeit gibt, könnte es beginnen, sich mehr um sie zu kümmern. – Shaded
Du hast mich jetzt auch neugierig gemacht! Ich habe keine Instanz SQL Server 2000 zur Hand bei der MO, aber bin fasziniert ... – AdaTheDev
@Shaded, Ich habe gelernt, Sie haben vielleicht auf die Lösung getroffen, aber es scheint, dass es funktioniert, auch wenn mehrere Tabellen in der Abfrage vorhanden sind . Diese Abfrage funktioniert auch ohne Probleme: 'SELECT t.est. *, T.est2. * FROM test, test2'. Ich habe auch versucht, ein paar Tische zu verbinden, um sicherzugehen, und das lief auch gut. –