Postcode met spatie

Status
Niet open voor verdere reacties.

Jakob69

Nieuwe gebruiker
Lid geworden
5 mrt 2013
Berichten
1
Ik heb een tabel met daarin klantgegevens. De postcode bestaat uit 6 posities (####$$). De inhoud moet worden overgezet naar een nieuwe tabel waar de postcode uit 7 posities bestaat (#### $$), dus met een spatie tussen de getallen en de letters.
Hoe verwerk ik dit in de SQL INSERT statement? Tevens moet in de SQL statement gecontroleerd worden of de letters hoofdletters zijn, anders moeten deze worden omgezet naar hoofdletters.

Wie kan me hiermee helpen?
 
De manier waarop is afhankelijk van het platform dat je gebruikt: MySQL, Oracle, MSSQL, Postgres, Access of iets anders. Aangezien de meeste sql vragen hier over MySQL gaan zal ik deze als voorbeeld gebruiken, als je iets anders zal het principe hetzelfde zijn en kun je de vergelijkbare variant gebruiken.

Wat je wil kan in een paar stappen die allemaal wel in 1 statement te plaatsen zijn:

  1. de huidige opknippen in eerste 4 posities en laatste 2
  2. laatste 2 posities omzetten naar hoofdletters
  3. postcode weer aan elkaar plakken met een spatie ertussen

1) Dit kan met behulp van SUBSTR()
[sql]test-> SELECT SUBSTR( '1234ab', 1, 4 ) cijfers
-> , SUBSTR( '1234ab', 5, 2 ) letters
-> FROM dual;
+---------+---------+
| cijfers | letters |
+---------+---------+
| 1234 | ab |
+---------+---------+
1 row in set (0.04 sec)[/sql]

2) Omzetten naar hoofdletters doe je met UPPER()
[sql]test-> SELECT SUBSTR( '1234ab', 1, 4 ) cijfers
-> , UPPER( SUBSTR( '1234ab', 5, 2 ) ) letters
-> FROM dual;
+---------+---------+
| cijfers | letters |
+---------+---------+
| 1234 | AB |
+---------+---------+
1 row in set (0.01 sec)[/sql]

3) Dan weer aan elkaar plakken met CONCAT()
[sql]test-> SELECT CONCAT( SUBSTR( '1234ab', 1, 4 )
-> , ' '
-> , UPPER( SUBSTR( '1234ab', 5, 2 ) )
-> ) postcode
-> FROM dual;
+----------+
| postcode |
+----------+
| 1234 AB |
+----------+
1 row in set (0.00 sec)[/sql]

In een insert statement zal dat er zo uitzien:
[sql]INSERT INTO nieuwetabel
( postcodenieuw )
SELECT CONCAT( SUBSTR( postcodeoud, 1, 4 )
, ' '
, UPPER( SUBSTR( postcodeoud, 5, 2 ) )
) postcode
FROM oudetabel;[/sql]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan