如何使用T-SQL正确连接列?

Use*_*404 22 t-sql sql-server-2005

我在表格中的多个列中有一个地址.

SELECT FirstName, LastName, StreetAddress, City, Country, PostalCode 
FROM Client
Run Code Online (Sandbox Code Playgroud)

我试图使用逗号(,)作为分隔符将地址相关列连接到一个字段中,但如果任何列"例如.城市"为空或空,则逗号不应该存在.

如何在cQL中使用TSQL中的三元运算符?或者建议我最好的做法?

谢谢

Tho*_*mas 39

当您使用null连接任何内容时,它将返回null.所以我试图用给定的列值连接一个逗号,如果该表达式返回null,我使用Coalesce返回一个空字符串.最后,如果我得到一个值,整个结果将以逗号开头.所以我使用Stuff函数删除了这个逗号.

Select Stuff(
    Coalesce(',' + FirstName,'')
    + Coalesce(',' + LastName,'')
    + Coalesce(',' + StreetAddress,'')
    + Coalesce(',' + City,'')
    + Coalesce(',' + Country,'')
    + Coalesce(',' + PostalCode ,'')
    , 1, 1, '')
From Client
Run Code Online (Sandbox Code Playgroud)

如果您只想要地址,那么显然您只需要包含这些列:

Select FirstName, LastName
    , Stuff(
        Coalesce(',' + StreetAddress,'')
        + Coalesce(',' + City,'')
        + Coalesce(',' + Country,'')
        + Coalesce(',' + PostalCode ,'')
    , 1, 1, '')
From Client
Run Code Online (Sandbox Code Playgroud)


Edw*_*ard 28

如果在NULLIF函数内包含COALESCE函数,它将对空列和NULL列正常工作

SELECT FirstName,
       LastName,
       STUFF(
           COALESCE(',' + NULLIF(StreetAddress, ''), '')  + 
           COALESCE(',' + NULLIF(City, ''), '') +
           COALESCE(',' + NULLIF(Country, ''), '') +
           COALESCE(',' + NULLIF(PostalCode , ''), ''),
           1, 1, '') AS "Address"
   FROM Client
Run Code Online (Sandbox Code Playgroud)