Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: Scheiding naamvelden
Prev Next
You are not authorized to post a reply.

Author Messages
Fred WesterinkUser is Offline

Posts:4

25-01-2010 14:19:15 Alert 

Ik heb een tijd zitten stoeien met het volgende probleem maar helaas zonder resultaat.

Wij willen binnen 1 record een samengesteld naamveld uitsplitsen in meerdere records bijv.:

Jansen, JJ wordt gesplitst naar de kolommen:  JJ   en    Jansen, in dit geval is er dus een splitsing op een ", " maar ik kan mij ook voorstellen dat er meer soorten scheidingstekens gaan voorkomen.

Ik heb zitten zoeken naar een soort substring maar hierbij kan ik volgens mij alleen een beginpositie aangeven en de meeste nederlandse namen hebben niet hetzelfde aantal tekens.

We hopen dat jullie hier al ervaring in hebben en ons daarmee van dienst kunnen zijn.

Bij voorbaat dank,

Fred

André KammanUser is Offline
PASS Nederland

Posts:124


25-01-2010 14:46:47 Alert 

Beste Fred,

In dit geval kan de CHARINDEX functie je een stuk op weg helpen.
Deze geeft de eerste positie van een bepaald karakter.

In combinatie met SUBSTRING of LEFT kun je het door jou gegeven voorbeeld verwerken.
Dat zou in een flink aantal gevallen moeten werken op een samengesteld naam veld, maar er zullen vast uitzonderingen zijn op deze regel...

Create

table #persoon(naam varchar(50), voornaam varchar(50), achternaam varchar(50))

Insert into #persoon(naam) values('Janssen, JJ')

Update #persoon
Set voornaam = LTRIM((SUBSTRING(naam, CHARINDEX(',', naam, 0) +1, LEN(naam)))),
      achternaam = LEFT(naam, charindex(',', naam)-1)

Select * From #persoon

Drop table #persoon

Groeten,

André

Hugo KornelisUser is Offline

Posts:19

27-01-2010 09:41:47 Alert 
Beste Fred,

In aanvulling op het antwoord van André nog het volgende.

Als je meer complexe string expressies uit elkaar moet gaan plukken, dan ga je al gauw over de grenzen van wat met SQL Server nog redelijkerwijs te doen is. De string functies van SQL Server zijn beperkt - op zich kan je er best veel mee, maar je krijgt al gauw erg ingewikkelde en nauwelijks te onderhouden constructies!

Een alterantief zou zijn een string handling component in een .Net taal te ontwikkelen (waar je de volledige kracht van regexp tot je beschikking hebt) en die als assembly in je SQL Server database (versie 2005 en hoger) te laden. Die kan je dan vanuit je queries aanroepen.

Maar misschien moet je ook overwegen om eens op de markt te kiijken wat er aan kant en klaar software te verkrijgen is voor het uiteenrafelen en opschonen van niet gestructureerd opgebouwde namen. Het zal best wat kosten, maar jouw tijd is evenmin gratis. En van dat soort gespecialiseerde software kan je allicht betere resultaten verwachten.

Met vriendelijke groeten,

Hugo Kornelis (SQL Server MVP)
Fred WesterinkUser is Offline

Posts:4

27-01-2010 09:56:56 Alert 
Andre en Hugo,

Bedankt voor de duidelijke query en de aanvulling. Ik zou graag wat meer met bijv. vb.net o.i.d. willen experimenteren maar hier heb ik niet zoveel tijd voor en zeker niet tijdens werktijd.
De query zullen we zeker gaan gebruiken.

Groet,

Fred
You are not authorized to post a reply.
Forums > Forums > Ontwikkelen > Scheiding naamvelden



ActiveForums 3.6
  
Copyright (c) 2010 PASS Nederland   Privacy Statement  Terms Of Use