2009-11-03 184 views

回答

2

CASE 
    WHEN TITLE IS NOT NULL THEN 'A' 
    WHEN LOCAL_TITLE IS NOT NULL THEN 'B' 
    END 
AS COMBINED_TITLE 

到這樣的事情

我不確定你的意思,但如果你想設置一個變量,你會做這樣的:

SELECT 
    @CombinedTitle = CASE 
     WHEN Title IS NOT NULL THEN Title 
     WHEN Local_Title IS NOT NULL THEN Local_Title 
    END 
... 

如果你仍然想創建列Combined_Title但來自這兩個標題列中的值,你會怎麼做:

SELECT 
    CASE 
     WHEN Title IS NOT NULL THEN Title 
     WHEN Local_Title IS NOT NULL THEN Local_Title 
    END AS Combined_Title 
... 

另見documentation on COALESCE,它甚至提到,這相當於一個CASE聲明就像你的(加上ELSE NULL

+0

thanx Blixt,您的第二個選擇是我後來,不幸的是它不能在SQL Server 2005中工作... – Fet 2009-11-03 09:08:14

+0

糟糕!有效!感謝很多Blixt。 – Fet 2009-11-03 09:10:40

+0

COALESCE是要走的路。 – onedaywhen 2009-11-03 10:01:18

2

ISNULL(TITLE,LOCAL_TITLE)

CASE 
    WHEN TITLE IS NOT NULL THEN COMBINED_TITLE=TITLE 
    WHEN LOCAL_TITLE IS NOT NULL THEN COMBINED_TITLE=LOCAL_TITLE 
    END 
AS COMBINED_TITLE 

Thanx提前AS COMBINED_TITLE

+0

短和對點找到的第一個非NULL值。喜歡它。 – Jonathan 2009-11-03 08:52:41

+1

請注意,如果TITLE和LOCAL_TITLE都爲NULL,則會將COMBINED_TITLE設置爲NULL(雖然在這種情況下可能需要這樣) – 2009-11-03 08:54:50

+0

You are right Tim – Fet 2009-11-03 09:06:30

3

你是否試圖在update語句中使用它?其實你可以破除的CASE語句在這種情況下

UPDATE 
    <table> 
SET 
    COMBINED_TITLE = COALESCE(TITLE, LOCAL_TITLE, COMBINED_TITLE) 

COALESCE將在列表中

+0

+1:'COALESCE'可能是Greg真正想要的。 – Blixt 2009-11-03 08:53:48

+0

沒有蒂姆,我需要報告,儘管非常感謝 – Fet 2009-11-03 09:05:26