sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2008 - adskillende adressefelt

Strengparsing i SQL er rodet og har tendens til at være skør. Jeg synes normalt, det er bedst helt at udføre den slags opgaver uden for SQL. Når det er sagt, givet mini-specifikationen ovenfor, er det muligt at parse dataene i de felter, du ønsker, sådan:

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

Bemærk, at du skal erstatte dit tabelnavn med det, jeg har kaldt adresser i underforespørgslen ovenfor.

Du kan se dette i aktion mod dine eksempeldata her .



  1. Når SIGTERM sendes, lukker den underordnede proces mysql-forbindelsen?

  2. Sådan fungerer Asinh() i PostgreSQL

  3. Midlertidigt SQL-datafelt

  4. MySQL-visninger og indeksbrug