Toon posts:

SQL order by string -> getal

Pagina: 1
Acties:
  • 134 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig een ASP site aan het ontwikkelen en maak gebruik van verschillende tabellen, waaronder een tblPercentages. Deze bevat een karakter veld waarin onder andere volgende waarden voorkomen.

96,00
96,10
97,00
98,56
99+
99,78
100,12
125,56

De waarden schommelen tussen 95 en 130, en zijn BIJNA altijd numeriek. Aangezien ik ook 99+ bijhoudt ben ik dus verplicht alles als string op te slaan.

Als ik dan in de order by component het veld opgeef, dan krijg ik pas als laatste 125,26 terug. (desc gesorteerd)

Kan ik op één of andere manier opgeven dat de order by de strings zoveel mogelijk numeriek moet proberen te sorteren?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:32

gorgi_19

Kruimeltjes zijn weer op :9

Volgens mij niet(volgens het alfabet kom 9 na 100). Maar kan je + niet beschouwen als 0.25; een update uitvoeren en vervolgens wel sorteren?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 31-08 22:49
select to_number(jeKolom) blaat
from jeTabel
order by blaat
?
Anders kijken op natural sort denk ik..

Verwijderd

en alleen sorteren op de eerste 2 cihjfers is natuurlijk niet voldoende?

anders kun je iets als:
code:
1
2
SELECT     TO_NUMBER(SUBSTR(percentage, 2)) AS perc
ORDER BY   perc DESC

  • Orphix
  • Registratie: Februari 2000
  • Niet online
waarom die + ? Wat betekent het?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Als het alleen een + is die er als string kan staan kan je ook een replace doen van de + door niets of bijvoorbeeld ",25" en dan de to_number er op los laten
Op donderdag 27 juni 2002 19:56 schreef Dash2in1 het volgende:

[..]


?
Anders kijken op natural sort denk ik..

Verwijderd

Topicstarter
Bedankt voor de replies.

1. door de eerste 2 cijfers af te zonderen ben ik inderdaad niets, aangezien ik ook 3cijferige getallen gebruik.


2. ik dacht ook eerst aan de to_number functie, maar vreemd genoeg werkte dit niet wanneer ik dit probeerde te runnen (Win XP, ISS 5, MS Access DB)

ik heb iets als volgt:

Code: select payoutSlot, to_number(payoutSlot) as slot from ... order by slot desc

Fout: Microsoft JET Database Engine error '80040e14'
De expressie bevat een ongedefinieerde functie to_number.


3. Die '+' heb ik nodig indien ik het percentage niet exact weet, maar indien ik bv wel weet dat het boven een bepaald getal ligt. Misschien niet echt duidelijk, maar ik moet het zo wel oplossen.


4. Wat wordt hiermee bedoeld?
Anders kijken op natural sort denk ik..

  • McMad
  • Registratie: Juli 2000
  • Laatst online: 18-08 11:26
Op vrijdag 28 juni 2002 13:18 schreef pussher o.a. het volgende:
3. Die '+' heb ik nodig indien ik het percentage niet exact weet, maar indien ik bv wel weet dat het boven een bepaald getal ligt. Misschien niet echt duidelijk, maar ik moet het zo wel oplossen.
Misschien is het slimmer om dit gegeven in een apart veld op te nemen en het getal in een gewoon number veld op te slaan.

He's mad, he's mad, he's madder then mad Jack McMad, winner of last years madman competition.


  • Coltrui
  • Registratie: Maart 2001
  • Niet online

Coltrui

iddqd

Of de velden voor het opslaan vullen tot maxlength met leading zeroes voor de komma en trailing na de komma.
Moet je er wel voor zorgen dat je geen variabel aantal cijfers na de komma hebt...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

McMad:
Misschien is het slimmer* om dit gegeven in een apart veld op te nemen en het getal in een gewoon number veld op te slaan.
* Het is slimmer

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1