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 .