Huidige situatie: MSSQL database en een tabel met adressen. Het is de bedoeling dat ik na het uitvoeren van een bepaalde query sorteer op huisnummer. Echter ziet deze kolom er als volgt uit:
Het gaat om een varchar veld. Als je dit sorteert krijg je dus de output hierboven: 100 komt eerder dan 2 etc. Dat is niet de bedoeling. Ik wil 1 als eerst en 222 als laatst. Dit valt op te lossen door SELECT CAST(huisnummer as INT) te doen, maar dit is niet mogelijk gezien het feit dat er ook nummers als '104a' en '222ii' bij zitten.
Een oplossing hiervoor zou zijn om met behulp van een scriptje de nummers van hun postfix te strippen en deze prefix in een aparte kolom op te slaan, en daar op te sorteren. Maar we krijgen dit bestand eens in de zoveel tijd van een externe partij aangeleverd en we willen dus eigenlijk niets aan het formaat veranderen. Weet iemand een manier om dit wel te sorteren met evt. behulp van wat slimme (MS)SQL functies?
| 1 |
| 10 |
| 100 |
| 101 |
| 102 |
| 104a |
| 2 |
| 21 |
| 201 |
| 222 |
| 222ii |
Het gaat om een varchar veld. Als je dit sorteert krijg je dus de output hierboven: 100 komt eerder dan 2 etc. Dat is niet de bedoeling. Ik wil 1 als eerst en 222 als laatst. Dit valt op te lossen door SELECT CAST(huisnummer as INT) te doen, maar dit is niet mogelijk gezien het feit dat er ook nummers als '104a' en '222ii' bij zitten.
Een oplossing hiervoor zou zijn om met behulp van een scriptje de nummers van hun postfix te strippen en deze prefix in een aparte kolom op te slaan, en daar op te sorteren. Maar we krijgen dit bestand eens in de zoveel tijd van een externe partij aangeleverd en we willen dus eigenlijk niets aan het formaat veranderen. Weet iemand een manier om dit wel te sorteren met evt. behulp van wat slimme (MS)SQL functies?
[ Voor 4% gewijzigd door Verwijderd op 10-03-2003 14:53 ]