Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Migracja programu SQL Server 2000 do 2008 — problem ORDER BY podczas korzystania z funkcji DISTINCT

Możesz nieznacznie zmienić semantykę, wykonując to:

SELECT ZipCode FROM 
(
  SELECT DISTINCT ZipCode = LEFT(tz.Zipcode, 5)
    FROM dbo.TerritoryZip
) AS x
ORDER BY ZipCode;

Nie rozwiązuje problemu tak naprawdę, ponieważ zapytanie jest bardziej szczegółowe i nadal nie można go uniknąć. Zasugerowana przez Ciebie poprawka jest dla mnie lepsza, ponieważ wyraźniej opisuje, co się dzieje.

Nie chcę być surowy, ale jeśli uważasz, że nie będziesz w stanie „znaleźć wszystkich wystąpień tego typu SQL”, to jak w ogóle ufasz swoim testom?

Sugerowałbym, że utrzymanie trybu 2000 nie jest optymalną odpowiedzią. Powodem jest to, że może to spowodować uszkodzenie innej składni (np. sposób, w jaki można wywoływać funkcje zarządzania dynamicznego - zobacz to Post na blogu Paula Randala i mój komentarz do tego), istnieje również ryzyko utrwalenia kodu, który powinien zostać naprawiony (np. w starym stylu *= / =* złączenia, które są ważne w trybie zgodności 2000, ale nie będą ważne po przejściu z wersji 2008 R2 -> Denali, która nie obsługuje zgodności z 2000).

Nie ma ustawienia „ścisłości”, ale możesz głosować na Erland Sommarskog SET STRICT_CHECKS ON; sugestia .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obetnij wszystkie tabele w bazie danych w SQL Server — SQL Server / TSQL Tutorial, część 55

  2. Zwiń dane weekendowe inaczej niż w dni powszednie

  3. Błąd podczas importowania pliku z 5 koncertami do tabeli

  4. Jak wybrać pojedynczy rekord w lewym sprzężeniu?

  5. sql cross join - jaki pożytek z tego znalazł ktoś?