Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server 2008 - Trennen des Adressfelds

Das Analysieren von Zeichenfolgen in SQL ist chaotisch und neigt dazu, spröde zu sein. Normalerweise denke ich, dass es am besten ist, diese Art von Aufgaben insgesamt außerhalb von SQL zu erledigen. Angesichts der obigen Mini-Spezifikation ist es jedoch möglich, die Daten wie folgt in die gewünschten Felder zu parsen:

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

Beachten Sie, dass Sie in der obigen Unterabfrage das, was ich Adressen genannt habe, durch Ihren Tabellennamen ersetzen müssen.

Sie können dies in Aktion mit Ihren Beispieldaten hier sehen .