आप ऐसा करके शब्दार्थ को थोड़ा बदल सकते हैं:
SELECT ZipCode FROM
(
SELECT DISTINCT ZipCode = LEFT(tz.Zipcode, 5)
FROM dbo.TerritoryZip
) AS x
ORDER BY ZipCode;
वास्तव में समस्या का समाधान नहीं करता है क्योंकि क्वेरी अधिक वर्बोज़ है और आप अभी भी इसे छूने से बच नहीं सकते हैं। आपने जो सुधार सुझाया है, वह मेरे दिमाग में बेहतर है क्योंकि यह इस बारे में अधिक स्पष्ट है कि क्या हो रहा है।
कठोर नहीं होना चाहिए, लेकिन अगर आपको नहीं लगता कि आप "इस प्रकार के SQL के सभी उदाहरण ढूंढ पाएंगे" तो आप अपने परीक्षण पर कैसे भरोसा कर रहे हैं?
मैं सुझाव दूंगा कि 2000 मोड रखना इष्टतम उत्तर नहीं है। इसका कारण यह है कि यह अन्य सिंटैक्स को तोड़ सकता है (उदाहरण के लिए जिस तरह से आप गतिशील प्रबंधन कार्यों को कॉल कर सकते हैं - देखें यह पॉल रैंडल ब्लॉग पोस्ट
और उस पर मेरी टिप्पणी), आप उस कोड को बनाए रखने का जोखिम भी उठाते हैं जिसे ठीक किया जाना चाहिए (जैसे पुरानी शैली *=
/ =*
जॉइन जो 2000 कॉम्पेट मोड में मान्य हैं, लेकिन जब आप 2008 R2 -> Denali से जाते हैं तो मान्य नहीं होंगे, जो 2000 कॉम्पेट का समर्थन नहीं करता है)।
कोई "सख्ती" सेटिंग नहीं है लेकिन आप एरलैंड सोमरस्कोग के SET STRICT_CHECKS ON के लिए वोट कर सकते हैं; सुझाव ।