Sql, string en int

  • Onderwerp starter Onderwerp starter SeanD
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

SeanD

Gebruiker
Lid geworden
8 mrt 2011
Berichten
8
Ik heb een tabel waarin een kolom staat als tekst.
De tabel noemt Data en de kolom noemt Volume.
Deze kolom staat in tekst omdat waarden zoals '<1200' er in voorkomen.

Als ik de volgende query gebruik
SELECT * FROM Data WHERE Volume < "5"
dan geeft hij ook resultaten weer met een Volume van bijvoorbeeld 10.
Dit komt omdat het als tekst gezien wordt en niet als getal.

Is het mogelijk om deze waarden wel als getal te zien, zonder de tabel te veranderen?

zoja, hoe?

Alvast bedankt!
 
Als je letterlijk het kleiner dan teken in de kolom hebt staan dan kan dat niet. Anders kun je de functie cast() gebruiken:[sql]SELECT * FROM Data WHERE CAST( Volume AS SIGNED ) < 5[/sql]Wel is het vreemd dat er numerieke waarden in een tekstveld staan, ook als het grote getallen zijn is er geen reden om er tekst van te maken.
 
Deze kolom staat in tekst omdat er buiten gewone getallen ook velden staan als >1200 of <1.

Als jouw query gebruik, krijg ik een syntax fout (operator ontbreekt).
 
Ik heb het ondertussen zelf gevonden:

SELECT * FROM Data WHERE CDbl(Nz(Volume, -1)) < 5

Nz gaat kijken of er geen lege velden zijn, zoja, dan verandert hij deze door -1 ^^

Toch bedankt!
 
Ik denk dat je moet werken aan je tabel layout... je kunt beter 2 velden gebruikt (aantal en operator oid) en de "<" waar nodig in dat andere veld zetten. Dat maakt zoeken op dingen een stuk makkelijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan