08. oktober 2002 - 13:13Der er
36 kommentarer og 3 løsninger
SQL >> sortering
Hej,
jeg har en kolonne med datatypen String. Den indeholder KUN tal, dvs der ville ikke opstå nogen former for fejl hvis datatypen ville blive lavet om til integer.
Når jeg sorterer stigende bliver der nu sorteret på følgende måde:
16237493 17289209 2789 34 54322
Det er tydeligvis uhensigtsmæssigt. Mit spørgsmål er om det ikke kan lade sig gøre at konvertere kolonnen i SQL-sætningen således, at den bliver sorteret som integer ville blive det?
Det er fodi den sortere det som tekst og så kigger den tegne for tegn og finder ud af "1" < "2" osv derfor er sorteringen sådan. Hvis du lavede kolonnen som interger/tal så ville den sortere rigtigt så 34 kommer først så 54322 ovs.
Alternativt skal du i din SQL førtæller SQL fortoleren den skal tolke kolonnen som Integer, denne ville virker i Access men jeg ved ikke hvad samme konverteing hedder i Oracle:
SQL = "SELECT kolonne FROM tabel ORDER BY Int(kolonne)"
Det virker underligt at order by to_number(kolonnenavn) ikke skulle virke. Hvad med simpelhen at lave kolonnen om til en NUMBER i stedet for? alter tabelnavn modify kolonne number;
ja den er, men det er ikke en jeg selv har lavet. Jeg sidder og arbejder med et system hvor man selv kan brugerdefinere hvilke udtræk man vil lave af databasen. Det er åbenbart ikke alt der er tilladt..jeg kan nemlig godt bruge to_char uden problemer
SELECT Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig FROM sagshoved WHERE Spærret = 0 AND Slutfaktureret = 0 AND Afsluttet = 0 ORDER BY Sagsnummer
det er sådan den ser ud når den sorterer "forkert", eller rettere efter string-datatypen.
SELECT Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig FROM sagshoved WHERE Spærret = 0 AND Slutfaktureret = 0 AND Afsluttet = 0 ORDER BY to_number(Sagsnummer)
select Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig from (select to_number(Sagsnummer) as SortFelt, Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig from SagsHoved where Spærret = 0 and Slutfaktureret = 0 and Afsluttet = 0 order by SortFelt)
det er ikke sådan at to_numer skal skrivers med stort så??:
SELECT Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig FROM sagshoved WHERE Spærret = 0 AND Slutfaktureret = 0 AND Afsluttet = 0 ORDER BY TO_NUMER(Sagsnummer)
eagleeye >> det gør desværre ingen forskel - jeg få stadig samme fejl . Du kan også se i fejlmeddelelsen at to_number var skrevet med CAPS, og på det tidspunkt skrev jeg med småt
kbb2 >> som sagt er det et program hvor jeg bare skal definere udtrækkende af databasen - dvs. jeg har ingen anelse om det er ODBC, ADO eller SQLNET/NET8... :o(
Fejlen er en ORA fejl dvs. den er genereret af Oracle.. Noget siger mig at du skal gå dit setup igennem. Jeg menner ikke Oracle, men sikrer dig at du rent faktisk også kører det rigtig script.
Du må fx IKKE anvende danske bogstaver som Æ, Ø Å
Prøv et step af gangen!
Fx: SELECT Sagsnummer, Sagsnavn, Kundenummer, Navn1, Sælger, Ansvarlig FROM sagshoved
Virker dette, så prøv det næste step og se hvor fejlen opstår!
..men det hele virker jo - det eneste der ikek virker er sorteringen. Den sorterer efter typen String(hvilket den jo også skal når kolonnen er af typen string) - jeg ville bare gerne have sorteringen til at blive i nummerorden - dvs. som om at kolonnen var af typen integer..
Tja hvis det virker med ÆØÅ i dine sqlscripts så er der noget der tyder på at din SQL sætning bliver fortolket. Hvilket program er det du bruger til at definere dine udtræks??
eagleeye >> nej det er jeg ikke sikker på! Jeg har fået fortalt at HELE kolonnen kun skulle indeholde tal - men det kan jo være at der ligger nogle bogstaver gemt et sted således at det ikke kan lade sig gøre at bruge to_number...synes du fejlmeddelelsen tyder på det?
Så er der noget der siger mig at din SQL sætning bliver "behandlet" inden den ryger videre til Oracle. Ring til Maconomys hotline, der er sikkert et snedigt sted du kan angive at to_number rent fatisk er et en gyldig funktion!
jeg tror konklusionen foreløbigt må være at der er tredjeparts-programmer indblandet. Jeg vil forhøre mig hos maconomy - for de nysgerrige vender jeg tilbage når der er nyt i sagen..
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.