sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 - separerande adressfält

Strängtolkning i SQL är rörig och tenderar att vara spröd. Jag tycker vanligtvis att det är bäst att göra den här typen av uppgifter utanför SQL helt och hållet. Som sagt, med tanke på mini-specifikationen ovan, är det möjligt att analysera data i de fält du vill ha så här:

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

Observera att du måste ersätta ditt tabellnamn med det jag har kallat adresser i underfrågan ovan.

Du kan se detta i aktion mot dina exempeldata här .



  1. Hur man ersätter Djangos primärnyckel med ett annat heltal som är unikt för den tabellen

  2. phpMyAdmin - kan inte ansluta - ogiltiga inställningar - ända sedan jag lade till ett root-lösenord - låst ute

  3. Ersätt radvärde med tom sträng om dublett

  4. Hur kan jag snabba upp denna indexerade vy?