[SQL] Oracle Constraint voor postcode

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

  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
Weet iemand hoe een constraint in oracle er uit ziet als je alleen postcodes mag invoeren.

5325wp


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

- Heb je zelf al wat bedacht?
- In wat voor formaat sla je je postcodes op?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

zo is je titel duidelijker

  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
De postcodes worden in een VARCHAR2(6) in het database gezet.

Ik zou echter niet weten hoe ik hier een constraint voor zou kunnen maken.

En ik kan ook niet echt wijs uit de help die bij oracle zit (kan zo iets trouwens helemaal niet vinden in de help.)

5325wp


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Een nog betere topic titel gegeven (in overleg met ACM)

Constraint dat je moet gaan leggen is dat de eerste 4 een getal moet wezen, en de laatste twee letters ( hoofd of klein ), althans ik neem aan dat je alleen nederlandse postcodes wilt hebben.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
idd zo iets zoek ik

5325wp


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
En mag niet met 0 beginnen :)

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 22-03 20:57

Skinny

DIRECT!

Op vrijdag 25 januari 2002 15:47 schreef raptorix het volgende:
En mag niet met 0 beginnen :)
En wil je ook de postBUSSEN uitfilteren, dan mag ie ook niet op een 0 eindigen :)

SIZE does matter.
"You're go at throttle up!"


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 25 januari 2002 15:57 schreef Skinny het volgende:
En wil je ook de postBUSSEN uitfilteren, dan mag ie ook niet op een 0 eindigen :)
De 4 getallen mag niet eindigen op een 0 bedoel je.. de postcode eindigt ALTIJD met een letter :+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
Maak het niet al te moeilijk. Als er maar 4 cijfers en 2letters staan is het goed.

5325wp


  • -=Arjan=-
  • Registratie: Februari 2000
  • Laatst online: 29-03 08:50
Psies, gewoon een kolom voor de 4 cijfers en een kolom voor de 2 letter. De ene is dan number(4) en de andere char(2). Klaar.

I think there is a world market for maybe five computers ... six tops. Thomas Watson, chairman IBM, 1943


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 22-03 20:57

Skinny

DIRECT!

Op vrijdag 25 januari 2002 16:01 schreef dusty het volgende:

[..]

De 4 getallen mag niet eindigen op een 0 bedoel je.. de postcode eindigt ALTIJD met een letter :+
WiseGuy ! (tis vrijdag hoor ! ;) )

[edit]Ohnee, lite-mod! :)

SIZE does matter.
"You're go at throttle up!"


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
Op vrijdag 25 januari 2002 18:22 schreef -=Arjan=- het volgende:
Psies, gewoon een kolom voor de 4 cijfers en een kolom voor de 2 letter. De ene is dan number(4) en de andere char(2). Klaar.
Yeh thanks, en dan 3/4 van mij database ontwerp aan moeten passen.

5325wp


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
whelp....
weet niemand een oplossing?

5325wp


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 28 januari 2002 17:46 schreef Crash_neo het volgende:
whelp....
weet niemand een oplossing?
Euh, als je dan ook nog uitlegt wat er nu niet meer lukt?

Of uitlegt wat je wel al hebt?

Verwijderd

Het lijkt erop dat Oracle niet je vakgebied is anders had je het wel geweten of inmiddels gevonden. :) (NFI)

Gaat het hier om een zgn 'unique constraint', of misschien alleen om een 'check', oftewel controle waarin je kijkt of de layout van de postcode goed is? Daarnaast vraag ik me af of je die postcode wil controleren op bestaanbaarheid en evt icm het adres (daar heb je dus een regelmatig bijgewerkte KPN postcodetabel voor nodig).

Het lijkt me niet handig om de cijfers en letters in een aparte kolom te zetten omdat je dan natgaat als je een buitenlandse postcode in wil voeren. Bovendien levert het meer werk dan profijt op.

  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
Oracle is idd niet mijn vakgebied :'(

Het gaat er eigenlijk alleen maar om dat mensen niet verschrikkelijk veel onzin kunnen invullen.(meer als waarschuwing op typefouten dan dat de postcode ook echt moet bestaat.) En het is alleen voor nederlandse postcodes.

5325wp


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 30-03 09:57

Thyzz

-=leeg=-

Topicstarter
hier stond onzin..

5325wp


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 18:02

TheDane

1.618

waarom check je 't niet gewoon in je code?
code:
1
2
3
if (!ereg ("([0-9]{4})-([a-zA-Z]{2})", $postcode)) {
 echo "foutieve invoer";
}

Verwijderd

Is dat Unix ofzo? Je kan toch gewoon een check-constraint op de tabel maken, of in het invoerschermpje? Gewoon met pl/sql.
En daar doe je een controle in zoals:

-----------------
function format_postcode (p_postcode in varchar2) RETURN varchar2
is
l_postcode varchar2(7) := replace(p_postcode,' ');
l_postcode_lengte number(1);
l_postcode_cijfers number(4);
l_postcode_letters varchar2(2);

l_postcode_lengte := nvl(length(l_postcode),0);
--
if l_postcode_lengte = 6
then
l_postcode_cijfers := substr(l_postcode,1,4);
l_postcode_letters := substr(l_postcode,5,2);
--
if upper(substr(l_postcode_letters,1,1)) = lower( substr( l_postcode_letters, 1, 1 ) )
or upper(substr(l_postcode_letters,2,1)) = lower( substr( l_postcode_letters, 2, 1 ) )
then
raise value_error;
end if;
--
return to_char( l_postcode_cijfers )||' '||upper( l_postcode_letters );
elsif l_postcode_lengte = 0
then
return null;
else
raise value_error;
end if;
---------------------

Heb je hier iets aan? Deze functie zorgt er overigens voor dat elke postcode met het zelfde formaat in de database staat (dus met spatie ertussen).
Pagina: 1