Stamping Out Outer-Joins (sort of)
Christian Kleinerman, one of the SQL Engine PMs, posted this to various Yukon newsgroups this weekend.
For years we’ve provided non-ANSI syntax to perform outer joins. (aka " *= outer joins ", "old style outer joins"). This syntax is ambiguous under some circumstances, which makes it hard to predict what the intent of the query is, let alone guarantee the desired results L
The ANSI standard provides non-ambiguous syntax to perform outer joins ( { LEFT | RIGHT | FULL } [ OUTER ] ) which has been available in the last few releases of SQL Server.
Given the above, we’ve often communicated our intention to deprecate this syntax in a future release of the product.
We’re considering disallowing old style (*=, =*) syntax in SQL Server 2005 under database compatibility 90. It would still be available for backwards compatibility under 80 and earlier compatibility levels (sp_dbcmptlevel). Applications would need to be changed to ANSI compliant syntax before moving to 90 compat.
Please let us know if you see any issues or concerns with this plan. All feedback welcome.
I for one have no problems with this and think its a step in the right direction. If you disagree, feel free to leave a comment here or send me a message -- I'll fowarded them up to Christian.