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

SQL Server 2008:campo Indirizzo separato

L'analisi delle stringhe in SQL è disordinata e tende a essere fragile. Di solito penso che sia meglio svolgere questo tipo di attività al di fuori di SQL del tutto. Detto questo, date le mini-specifiche sopra, è possibile analizzare i dati nei campi desiderati in questo modo:

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

Tieni presente che dovrai quindi sostituire il nome della tabella con quelli che ho chiamato indirizzi nella sottoquery sopra.

Puoi vederlo in azione rispetto ai tuoi dati di esempio qui .