sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 - adresveld scheiden

String-parsing in SQL is rommelig en heeft de neiging broos te zijn. Ik denk meestal dat het het beste is om dit soort taken helemaal buiten SQL uit te voeren. Dat gezegd hebbende, gezien de mini-specificatie hierboven, is het mogelijk om de gegevens in de gewenste velden te parseren, zoals:

select 
  left(PostalAddress, charindex('^', PostalAddress) - 1) as street_address,
  left(second_part, len(second_part) - charindex(' ', reverse(second_part))) as suburb,
  right(second_part, charindex(' ', reverse(second_part))) as state,
  reverse(substring(reverse(PostalAddress), 2, 4)) as postal_code
from (
  select
    PostalAddress,
    rtrim(reverse(substring(reverse(PostalAddress), 6, len(PostalAddress) - charindex('^', PostalAddress) - 5))) as second_part
  from Addresses
) as t1

Houd er rekening mee dat u uw tabelnaam moet vervangen door wat ik adressen heb genoemd in de bovenstaande subquery.

U kunt dit in actie zien tegen uw voorbeeldgegevens hier .



  1. Groepeer pagina's uit één kolom

  2. Php - MySQL selecteert gegevens uit tabel en werkt vervolgens dezelfde tabel bij

  3. Hoe gebruik je partition by en order by in over-functie?

  4. Verwijzen naar Oracle door de gebruiker gedefinieerde typen via DBLINK?