[mysql] zoeken binnen postcode lettercodes

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

Acties:
  • 0 Henk 'm!

Anoniem: 62555

Topicstarter
Ik zit met een probleem, dat ik maar niet uitgedokterd krijg.
Het zal ongetwijfeld simpel zijn ...

Ik heb een wijkenbestand gekregen in vorm van:

wijk A : 3024 DJ t/m ZZ

Stel ik krijg de postcode 3024 XA

Ik weet nu voor mezelf dat dit tussen 3024 DJ en ZZ ligt.

Maar hoe kan ik dit nu in MySQL controleren?
Bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

  • degroot
  • Registratie: December 2003
  • Niet online
Hoe heb je je tabel ingedeeld?

Staat 1234AB in 1 kolom , of heb j die netjes opgespilts in 2 Kolommen?(dus de getallen van de letters gescheiden)
Daarmee kun je namelijk de query ook weer op aanpassen.

Geef dus even iets meer info over je indeling

[ Voor 9% gewijzigd door degroot op 21-02-2007 11:10 ]

www.degroot-it.nl


Acties:
  • 0 Henk 'm!

Anoniem: 62555

Topicstarter
de opslag van de wijk is:

cijfers, start_letter_1, start_letter_2, eind_letter_1, eind_letter_2

De letters zijn opgeslagen als de ascii waarden (integers)

De opslag van het pand is cijfers, letters


Maar het gaat me meer om het probleem: hoe vis ik uit dat XA tussen DJ en ZZ ligt.

Acties:
  • 0 Henk 'm!

  • Glabbeek
  • Registratie: Februari 2001
  • Laatst online: 19-05 09:22

Glabbeek

Dat dus.

Je zou de postcode in zijn geheel in een getal kunnen uitdrukken, door de letters te vervangen door hun ascii-waarde of hun plaats in het alfabet. Dan krijg je codes als:

3024 DJ -> 30240410
3024 ZZ -> 30242626
3024 XA -> 30242501

Dan is het makkelijk te zien dat de gezochte postcode in die wijk ligt.

En zo is het maar net.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Nu online

Janoz

Moderator Devschuur®

!litemod

Als je beide letter samen neemt kun je toch gewoon kijken of de code er alfabetisch tussen ligt? Lijkt me niet zo lastig iig.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Anoniem: 50683

Voorbepalen v/d wijk heb je de letters niet nodig op zich:

http://nl.wikipedia.org/wiki/Postcode
De code bestaat uit vier cijfers en twee letters. De eerste 2 cijfers geven de regio aan, de laatste 2 cijfers de wijk. De twee letters geven de buurt en straat aan.

Acties:
  • 0 Henk 'm!

Anoniem: 62555

Topicstarter
Janoz, je hebt helemaal gelijk, ik zei toch dat het waarschijnlijk simpel was!
Ik wist niet dat dit kon:

SELECT 'XA' BETWEEN 'DJ' AND 'ZZ'

Acties:
  • 0 Henk 'm!

  • CyberJack
  • Registratie: Augustus 2002
  • Laatst online: 17:12
Je zou het ook kunnen doen doormiddel van een reguliere expressie in je query.

code:
1
SELECT * FROM <tabel> WHERE <veld> REGEXP "^[0-9]{4}[\ ]?[D-Z][A-Z]$"


In dit geval krijg je eerst 4 cijfers, gevolgd door een mogelijke spatie, en dan de letters.
De eerste letter moet liggen in het gebied D t/m Z de 2de letter moet liggen in het gebied A-Z

De postcode 3024 XA zou dan geldig zijn volgens deze query. De postcode 1234 AB niet.

https://bottenberg.dev


Acties:
  • 0 Henk 'm!

Anoniem: 62555

Topicstarter
Anoniem: 50683 schreef op woensdag 21 februari 2007 @ 11:20:
Voorbepalen v/d wijk heb je de letters niet nodig op zich:

http://nl.wikipedia.org/wiki/Postcode

[...]
Niet helemaal waar,er zijn hier in Brielle toch echt 3 of meer wijken binnen 1 cijfergebied ...

  • -=bas=-
  • Registratie: Oktober 2000
  • Laatst online: 22-04 02:56
Kan je geen "LIKE" statement gebruiken in de SQL statement?

Senile! Senile Oekaki


Anoniem: 50683

Anoniem: 62555 schreef op woensdag 21 februari 2007 @ 11:35:
[...]
Niet helemaal waar,er zijn hier in Brielle toch echt 3 of meer wijken binnen 1 cijfergebied ...
Ah, zie moet toch niet teveel vertrouwen op die wikepedia.
cyberjack77 schreef op woensdag 21 februari 2007 @ 11:25:
Je zou het ook kunnen doen doormiddel van een reguliere expressie in je query.

code:
1
SELECT * FROM <tabel> WHERE <veld> REGEXP "^[0-9]{4}[\ ]?[D-Z][A-Z]$"


In dit geval krijg je eerst 4 cijfers, gevolgd door een mogelijke spatie, en dan de letters.
De eerste letter moet liggen in het gebied D t/m Z de 2de letter moet liggen in het gebied A-Z

De postcode 3024 XA zou dan geldig zijn volgens deze query. De postcode 1234 AB niet.
Ben je dan niet super ongeindexeerd aan het zoeken ??
Pagina: 1