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)