Home Forums SQL Server 2008 SQL Server 2008 - General Looking for way to dynamically replace street suffix with abbreviation based on tables RE: Looking for way to dynamically replace street suffix with abbreviation based on tables

  • jeff.born (10/21/2016)


    Yes there are, they are:

    N, S, E, W, NE, NW, SE, SW

    Sergiy (10/21/2016)


    Is there a fixed set of possible directionals?

    In this case you can dynamically remove them from Address strings and then match only the last word of remaining strings to the Street Suffixes:

    CREATE TABLE dbo.AddressDirectional (

    ID TINYINT IDENTITY (1,1) PRIMARY KEY NOT NULL,

    Code VARCHAR(5) COLLATE DATABASE_DEFAULT NOT NULL,

    UNIQUE (Code)

    )

    INSERT INTO dbo.AddressDirectional (Code)

    SELECT 'N'

    UNION

    SELECT 'S'

    UNION

    SELECT 'E'

    UNION

    SELECT 'W'

    UNION

    SELECT 'NE'

    UNION

    SELECT 'NW'

    UNION

    SELECT 'SE'

    UNION

    SELECT 'SW'

    SELECT [Address_pk], [Address],

    REPLACE([Address],ss.[PrimaryStreetSuffixName],ss.[PostalServiceStandardSuffixAbbreviation]) AS [AddressAbbreviated]

    FROM [dbo].[Address] a

    LEFT JOIN dbo.AddressDirectional d ON a.Address LIKE '% ' + d.Code

    INNER JOIN [dbo].[StreetSuffix] ss on RTRIM(ISNULL(LEFT(a.Address, LEN(a.Address)-LEN(' ' + d.Code)), a.[Address])) LIKE '% ' + ss.PrimaryStreetSuffixName

    UNION

    SELECT [Address_pk], [Address],

    REPLACE([Address],ss.[CommonlyUsedStreetSuffixOrAbbreviation], ss.[PostalServiceStandardSuffixAbbreviation]) AS [AddressAbbreviated]

    FROM [dbo].[Address] a

    LEFT JOIN dbo.AddressDirectional d ON a.Address LIKE '% ' + d.Code

    INNER JOIN [dbo].[StreetSuffix] ss on RTRIM(ISNULL(LEFT(a.Address, LEN(a.Address)-LEN(' ' + d.Code)), a.[Address])) LIKE '% ' + ss.CommonlyUsedStreetSuffixOrAbbreviation and not (a.[Address] LIKE '% ' + ss.PrimaryStreetSuffixName )

    UNION

    SELECT [Address_pk], [Address], 'N/A'

    FROM [dbo].[Address] a

    LEFT JOIN dbo.AddressDirectional d ON a.Address LIKE '% ' + d.Code

    WHERE NOT EXISTS (

    SELECT *

    FROM [dbo].[StreetSuffix] ss WHERE a.[Address] LIKE '% ' + ss.CommonlyUsedStreetSuffixOrAbbreviation

    OR (RTRIM(ISNULL(LEFT(a.Address, LEN(a.Address)-LEN(' ' + d.Code)), a.[Address])) LIKE '% ' + ss.PrimaryStreetSuffixName )

    )

    ORDER BY [Address_pk]

    _____________
    Code for TallyGenerator