Den sidste værdi returneres hvis indholdet i feltet UGEDAG ikke findes i din liste 'mandag','tirsdag',....'søndag' Så hvis du i feltet UGEDAG har en række med 'monday' vil den blive sorteret med '99'
Kom lige i tanke om, at der kan være forskel på functions mellem forskellige databaser. Mit oprindelige svar vil virke hvis du anvender en Oracle database( som jeg gør til daglig). Da du muligvis anvender MySQL skulle du prøve FIND_IN_SET i stedet for: FIND_IN_SET(str,strlist) Returns a value 1 to N if the string str is in the list strlist consisting of N substrings. A string list is a string composed of substrings separated by `,' characters. If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimised to use bit arithmetic! Returns 0 if str is not in strlist or if strlist is the empty string. Returns NULL if either argument is NULL. This function will not work properly if the first argument contains a `,': mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2
er der en grund til at du ikke har sat tallene 1-7 ind i tabellen i stedet for ugedagene, og derefter joinet den med en ny tabel der lænker 1-7 med ugedagenes navne? Det andet lyder særdeles unormaliseret.
Sidste forsøg. Jeg har nu "konverteret" Oracles DECODE function til ANSI SQL, så må vi se om det hjælper dig.
select UGEDAG from tabelX order by CASE WHEN LOWER(UGEDAG)='mandag' THEN '1' WHEN LOWER(UGEDAG)='tirsdag' THEN '2' WHEN LOWER(UGEDAG)='onsdag' THEN '3' WHEN LOWER(UGEDAG)='torsdag' THEN '4' WHEN LOWER(UGEDAG)='fredag' THEN '5' WHEN LOWER(UGEDAG)='lørdag' THEN '6' WHEN LOWER(UGEDAG)='søndag' THEN '7' ELSE '9' END
PS. Jeg har ikke adgang til en MySQL database, så jeg kan ikke teste ovennævnte. Hvis MySQL ikke bryder sig om CASE i "order by" clauses, så prøv at lade det være en del af din select-list.
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.