これを行うことで、セマンティクスを少し変更できます:
SELECT ZipCode FROM (SELECT DISTINCT ZipCode =LEFT(tz.Zipcode, 5) FROM dbo.TerritoryZip) AS xORDER BY ZipCode;
プレ>クエリはより冗長であり、それでも触れずにはいられないため、実際には問題は解決しません。あなたがすでに提案した修正は、何が起こっているかについてより明確であるため、私の考えではより良いです。
厳しい言い方をするつもりはありませんが、「このタイプの SQL のすべてのインスタンスを見つける」ことができないと思われる場合、テストをどのように信頼できますか?
2000 モードを維持することは最適な答えではないことをお勧めします。その理由は、これにより他の構文が壊れる可能性があるためです (たとえば、動的管理関数を呼び出す方法 - これポール・ランダルのブログ投稿 およびそれに対する私のコメント)、修正する必要があるコードを永続化するリスクもあります (たとえば、古いスタイルの
*=
/=*コード> 2000 互換モードでは有効ですが、2008 R2 -> 2000 互換をサポートしないデナリから移行すると無効になります)。
「厳密」設定はありませんが、Erland Sommarskog の SET STRICT_CHECKS ON; に投票できます。提案 .