我有三列,CITY
, STATE
, COUNTRY
。一列、两列或所有列可能为 NULL。
通过以下逻辑,使用下面的 SQL 生成单个字符串。很乱,想知道有没有更简单的方法来实现输出?我考虑过 CONCAT() 但我不认为我可以使用它并且仍然在那里获得分隔符。
', '
.分隔。排除国家。''
)我要补充一点,如果 CITY 和/或 STATE 值存在,那么 COUNTRY 永远不会为 NULL。
这是到目前为止的代码。它很乱,但我相信它满足上面列出的输出要求。
我正在使用 SQL Server 2008。
CASE WHEN
CASE WHEN ISNULL(M.CITY, '') = '' THEN '' ELSE ISNULL(M.CITY, '') + ', ' END + CASE WHEN ISNULL(M.PROVINCE, '') = '' THEN '' ELSE ISNULL(M.PROVINCE, '') END
= '' THEN CASE WHEN COUNTRY IS NOT NULL THEN COUNTRY ELSE NULL END ELSE
CASE WHEN ISNULL(M.CITY, '') = '' THEN '' ELSE ISNULL(M.CITY, '') + ', ' END + CASE WHEN ISNULL(M.PROVINCE, '') = '' THEN '' ELSE ISNULL(M.PROVINCE, '') END
END
+
CASE
WHEN (M.CITY IS NULL AND M.PROVINCE IS NOT NULL) OR (M.CITY IS NOT NULL AND M.PROVINCE IS NULL) THEN
CASE WHEN PROVINCE IS NOT NULL AND CITY IS NULL THEN ', ' ELSE '' END + COUNTRY
ELSE ''
END
LOCATION
Run Code Online (Sandbox Code Playgroud)
小智 13
这能满足您的需求吗?
select coalesce(city + ', ' + state,
city + ', ' + country,
state + ', ' + country,
country,
state,
city) as location
Run Code Online (Sandbox Code Playgroud)
如果您 100% 确定以下内容也成立(如果有限制条件可以确定):
我要补充一点,如果 CITY 和/或 STATE 值存在,那么 COUNTRY 永远不会为 NULL。
那么最后两个参数也可以省略:
select coalesce(city + ', ' + state,
city + ', ' + country,
state + ', ' + country,
country)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
825 次 |
最近记录: |