How can I improve this Mailing Address SQL Server SELECT Statement?

后端 未结 3 1043
旧时难觅i
旧时难觅i 2020-12-11 10:43

How can I format a Mailing Address so that I always push all non-null rows to the top? That is, I want to convert an address from the structure below to a mailing address.<

3条回答
  •  有刺的猬
    2020-12-11 11:22

    Here's a three-minutes-invested solution:

    DECLARE @address TABLE (
        [Line1] [varchar](50) NULL,
        [Line2] [varchar](50) NULL,
        [Line3] [varchar](50) NULL,
        [City] [varchar](50) NULL,
        [State] [varchar] (2) NULL,
        [PostalCode] [varchar](50) NULL
    )
    
    INSERT INTO @address (
        [Line1],
        [Line2],
        [Line3],
        [City],
        [State],
        [PostalCode]
    )
    VALUES (
        NULL,
        '123 Some Address',
        NULL,
        'Royal Oak',
        'MI',
        '45673-2312'
    )
    
    SELECT * FROM @address
    
    SELECT
          ISNULL(Line1 + CHAR(13), '')
        + ISNULL(Line2 + CHAR(13), '')
        + ISNULL(Line3 + CHAR(13), '')
        + ISNULL(City    + ' ',    '')
        + ISNULL([State] + ' ',    '')
        + ISNULL(PostalCode,       '')
    FROM @address
    

    Result:

    123 Some Address
    Royal Oak MI 45673-2312
    

    Fiddle with the control characters until you get the result you need.

提交回复
热议问题