2012-01-06 46 views
0

我使用以下SELECT查詢基於兩列,以產生一個結果列:串聯列,如果不相等

SELECT colA + '(' + colB + ')' AS formattedCol from mytable WHERE ... 

但是如果colAcolB值等於我只是需要具備的價值colA

有沒有辦法在SQL中做到這一點?

+1

在MS Access中,字符串連接符是&not +,如果其中一列爲空,則會返回null。 – Fionnuala 2012-01-06 11:31:26

+0

這一切都變得有點瘋了,讓我們結束吧,IIF是這裏最好的解決方案,Remou的答案應該是公認的答案。 – 2012-01-06 15:58:20

回答

3

正如你所指出的,@Andrew,I如果由MS Access使用的,所以:

SELECT IIf([colA] = [colB], [colA], [colA] & '(' & colB & ')') AS formattedCol 
FROM mytable WHERE 

注意,在MS Access中的字符串連接符是&,而不是+。當列爲空時,使用+會導致返回null。

+0

你可能想在解決別人問題之前修正自己的答案:-) – paxdiablo 2012-01-06 11:43:24

+0

@paxdiabolo你有什麼反對的嗎?它運行在MS Access中,yesno :) – Fionnuala 2012-01-06 11:46:59

+2

(我想看看如果我在SQL Server問題上發佈了Access解決方案,我的速度有多快:D) – Fionnuala 2012-01-06 11:49:10

0
SELECT CASE 
    WHEN colA = colB 
     THEN colA 
     ELSE colA + '(' + colB + ')' 
    END AS formattedCol from mytable WHERE ... 
+0

我無法在Access中工作,但是我用'IIF'完成了。謝謝 – Flash 2012-01-06 05:16:00

+2

SQL是一個通用標記,不涉及SQL服務器。這個答案將永遠不適用於MS訪問,這是OP請求的SQL類型。 – Fionnuala 2012-01-06 11:32:17

+0

您是否錯過了「有沒有辦法在SQL中執行此操作?」的部分? – Dan 2012-01-06 14:56:13