我發佈了一個類似的問題,回到現在,因爲我需要更新此代碼,我回來問一個後續問題。上一個問題在這裏:
Computed column based on nullable columnsComputed Column(COALESCE vs CASE vs ISNULL)
我的數據(Address1, Address2, City, State, Zip, Country
)可能有不完整的信息。即我無法保證除State
和Country
列以外的任何內容都將具有數據。我想爲FullAddress
計算一列。
以前,我使用COALESCE
,如果所有字段都填寫好了,那麼效果很好。現在,由於數據要求已經放寬,這不再是一個選項(因爲我們在FullAddress
中以重複逗號結束)。這裏是我以前使用過的(筆記,我只是在這裏使用SELECT語句以方便使用 - 一旦我有一些適用於所有情況的東西,將轉換爲計算列「alter table add」語句):現在
SELECT (((((COALESCE([Address1],'')
+ COALESCE(', '+[Address2],''))
+ COALESCE(', '+[City],''))
+ COALESCE(', '+[State],''))
+ COALESCE(', '+[Zip],''))
+ COALESCE(', '+[Country],'')) AS FullAddress
FROM Locations
,我已經把使用CASE
替代,但它仍然在那裏Address1 is NULL
沒有爲邊緣的情況下工作(問題是,FullAddress
會有「」作爲前兩個字符)
SELECT CASE WHEN [Address1] IS NOT NULL THEN [Address1] ELSE '' END
+ CASE WHEN [Address2] IS NOT NULL THEN ', ' + [Address2] ELSE '' END
+ CASE WHEN [City] IS NOT NULL THEN ', ' + [City] ELSE '' END
+ CASE WHEN [State] IS NOT NULL THEN ', ' + [State] ELSE '' END
+ CASE WHEN [Zip] IS NOT NULL THEN ', ' + [Zip] ELSE '' END
+ CASE WHEN [Country] IS NOT NULL THEN ', ' + [Country] ELSE '' END
AS [FullAddress]
FROM Locations
我有點卡在這個po INT。任何建議接下來要嘗試什麼?
有什麼問題? – 2012-01-08 03:13:34
我的問題是:如何構造語句,以便在丟失數據的情況下(例如,丟失Address1),FullAddress計算列不以''開頭, – 2012-01-08 03:15:49