sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2008:separación del campo Dirección

El análisis de cadenas en SQL es desordenado y tiende a ser frágil. Por lo general, creo que es mejor hacer este tipo de tareas fuera de SQL por completo. Dicho esto, dada la mini-especificación anterior, es posible analizar los datos en los campos que desee de la siguiente manera:

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

Tenga en cuenta que deberá sustituir el nombre de su tabla por lo que he llamado direcciones en la subconsulta anterior.

Puede ver esto en acción contra sus datos de muestra aquí .