Конкатенационный адрес SQL - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно выяснить, как объединить почтовые адреса в следующем формате:

address1 address 2 (sometimes not present) city state zip5 - zip4 (sometimes not present

Я попытался сделать это на примере, который нашел в Интернете:

Stuff(  
    Coalesce(' ' + Buyer_Address1, '') + 
    Coalesce(' ' + Buyer_Address2, '') + 
    Coalesce(' ' + Buyer_City, '') + 
    Coalesce(' ' + Buyer_State, '') + 
    Coalesce(' ' + Buyer_ZipFive, '') +
    Coalesce('-' + Buyer_ZipFour, ''), 1, 1, '') AS [MailingAddress]

Комуэти адреса:

Address 1               Address 2   City    State   Zip
210 Independence Blvd               Tucson  AZ  85641
1 Palace Lane           Suite A     Toad Kingdom    FL  37058
123 Star Lane                       Star Kingdom    OH  54678

Но результаты таковы:

210 Independence Jr Blvd Tucson AZ 85641-
1 Palace LaneSuite A Toad Kingdom FL 37058-
123 Star Lane Star Kingdom OH 54678-

Любая помощь в решении этих проблем будет велика.

Спасибо, любезно.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Просто используйте функцию CONCAT ...

SELECT 
    CONCAT(mt.Address1 + ' ', mt.Address2 + ' ', mt.City + ' ', mt.State + ' ', mt.ZipFive, '-' + mt.ZipFour)
FROM 
    dbo.MyTable mt;
0 голосов
/ 16 октября 2018

Ваш Buyer_ZipFour будет содержать пустые строки, а не NULL.Если это так, это должно делать то, что вы хотите:

Stuff(Coalesce(' ' + Buyer_Address1, '') + 
      Coalesce(' ' + Buyer_Address2, '') + 
      Coalesce(' ' + Buyer_City, '') + 
      Coalesce(' ' + Buyer_State, '') + 
      Coalesce(' ' + Buyer_ZipFive, '') +
      Coalesce('-' + nullif(Buyer_ZipFour, ''), ''), 1, 1, ''
     ) AS [MailingAddress]

На основании результатов выборки, остальные поля, как представляется, не имеют этой проблемы.

0 голосов
/ 15 октября 2018

Похоже, что ваши пустые данные пустые, а не нулевые, поэтому coalesce не сделает эту работу.Вместо этого попробуйте:

Stuff(  
    Coalesce(' ' + Buyer_Address1, '') + 
    --Coalesce(' ' + Buyer_Address2, '') + 
    case when coalesce(Buyer_Address2,'') <> '' then ' ' + Buyer_Address2 else '' end +
    Coalesce(' ' + Buyer_City, '') + 
    Coalesce(' ' + Buyer_State, '') + 
    Coalesce(' ' + Buyer_ZipFive, '') +
    --Coalesce('-' + Buyer_ZipFour, '')
    case when coalesce(Buyer_ZipFour,'') <> '' then '-' + Buyer_ZipFour else '' end
    , 1, 1, '') AS [MailingAddress]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...