04. juni 2003 - 13:20Der er
8 kommentarer og 1 løsning
Kan ORDER BY sortere æ,ø og å alfabetisk korrekt
Når jeg i MS SQL laver en ORDER BY i min sqlsætning kommer æ, ø og å til at blive sorteret på en måde der ser ud som om ordningen går efter ordningen i en ascii-tabel
Mit spørgsmål er nu om der i MS SQL er en form for dansk-indstilling der kan få en ORDER BY til at sortere korrekt alfabetisk (set fra et dansk synspunkt)
SQL Serveren installeres med en collation (sorteringsorden), der vælges på installationstidspunktet.
Denne collation bruges ved oprettelse af (n)varchar/char/text kolonner i tabellerne med mindre, man specifikt angiver en collation i create table statementet.
Collation styrer sorteringen på en select - med mindre, du gør, som jeg angav i order by, nemlig at overstyre collation.
Der kan også angives collation ved sammenligning af tekster. Dette kan være godt, hvis man skal joine mellem tabeller i to forskellige databaser, der har hver deres collation.
Jeg har forsøgt med følgende sætning men uden held. Hvad gør jeg galt?
select distinct(url), link.tekst, hjalpe_tekst, link_type.file_navn from link, link_type where link.tekst like 'f%' and link_type.id = link.type_id order by link.tekst collate Danish_Norwegian_CI_AS
Jeg får følgende fejlmeddelse: Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
Den kører fint hvis jeg undlader collate Danish_Norwegian_CI_AS i sætningen.
Jeg ved ikke om det har noget med sagen at gøre men de steder hvor jeg bruger ... order by <FeltNavn> collate Danish_Norwegian_CI_AS ændrede jeg koden fra objRec.Open strSQL, objCon, AdOpenForwardOnly, AdLockReadOnly, AdCmdText til objRec.Open strSQL, objCon, AdOpenStatic, AdLockReadOnly, AdCmdText for at få det til at virke
Det har ikke noget at sige - det er kun hvordan recordsettet skal åbnes fra klienten. Din fejl burde også dukke op i Query Analyzer.
Jeg har lige testet selv. Bruger du distinct, skal du have collate med i select på de felter, du bruger collate på i order by. Det hænger sammen med, at SQL Server åbenbart opfatter det som forskellige felter.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.