Why does SQL Server 2000 treat SELECT test.* and SELECT t.est.* the same?

Posted by Chris Pebble on Stack Overflow See other posts from Stack Overflow or by Chris Pebble
Published on 2010-06-04T14:11:58Z Indexed on 2010/06/14 21:42 UTC
Read the original article Hit count: 186

Filed under:
|

I butter-fingered a query in SQL Server 2000 and added a period in the middle of the table name:

SELECT t.est.* FROM test

Instead of:

SELECT test.* FROM test

And the query still executed perfectly. Even SELECT t.e.st.* FROM test executes without issue.

I've tried the same query in SQL Server 2008 where the query fails (error: the column prefix does not match with a table name or alias used in the query). For reasons of pure curiosity I have been trying to figure out how SQL Server 2000 handles the table names in a way that would allow the butter-fingered query to run, but I haven't had much luck so far.

Any sql gurus know why SQL Server 2000 ran the query without issue?

Update: The query appears to work regardless of the interface used (e.g. Enterprise Manager, SSMS, OSQL) and as Jhonny pointed out below it bizarrely even works when you try:

SELECT TOP 1000 dbota.ble.* FROM dbo.table

© Stack Overflow or respective owner

Related posts about tsql

Related posts about sql-server-2000