除非此处的所有CASE
语句均为True,否则会为整个Null
列返回Options
。
我无法弄清楚的是如何返回任何True CASE
语句,即:如果Col2,Col4不为null,则仅返回这些值。我不知道还有什么可以尝试,帮助?
SELECT
CASE WHEN Col1 Is Not Null THEN '<li>' + Col1 + '</li>' END +
CASE WHEN Col2 Is Not Null THEN '<li>' + Col2 + '</li>' END +
CASE WHEN Col3 Is Not Null THEN '<li>' + Col3 + '</li>' END +
CASE WHEN Col4 Is Not Null THEN '<li>' + Col4 + '</li>' END Options
FROM TABLE
同样,问题是除非找到所有Case
语句,否则它会为Options
列返回Null。
答案 0 :(得分:5)
像这样:
SELECT
CASE WHEN Col1 Is Not Null THEN '<li>' + Col1 + '</li>' ELSE '' END +
CASE WHEN Col2 Is Not Null THEN '<li>' + Col2 + '</li>' ELSE '' END +
CASE WHEN Col3 Is Not Null THEN '<li>' + Col3 + '</li>' ELSE '' END +
CASE WHEN Col4 Is Not Null THEN '<li>' + Col4 + '</li>' ELSE '' END Options
FROM TABLE
答案 1 :(得分:2)
SELECT
ISNULL('<li>' + Col1 + '</li>', '') +
ISNULL('<li>' + Col2 + '</li>', '') +
ISNULL('<li>' + Col3 + '</li>', '') +
ISNULL('<li>' + Col4 + '</li>', '') AS Options
FROM TABLE
;
和
SELECT
COALESCE('<li>' + Col1 + '</li>', '') +
COALESCE('<li>' + Col2 + '</li>', '') +
COALESCE('<li>' + Col3 + '</li>', '') +
COALESCE('<li>' + Col4 + '</li>', '') AS Options
FROM TABLE
;