Вы можете немного изменить семантику, выполнив это:
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 Эрланна Соммарскога;предложение .