我們有一個傳統界面,插入到表T1中,值爲"BODY_TEXT" (varcharmax)
,"BODY_BIN"(varbinarymax)
。 它目前僅插入到其中一列,並將另一列留空。 現在我們實現了一個新的界面 - 只有"BODY"(varbinarymax)
列的表T2。SQL視圖中的雙列
我需要創建一個視圖V1應該取代T1,意味着
CREATE VIEW V1 AS
SELECT
T2.UNIQUE_ID AS UNIQUE_ID,
等等
現在我不知道如何對待T2.BODY
列...我需要做的是這樣 T2.BODY AS (whatever is not null(BODY_BIN, BODY_TEXT))
。它還必須支持varcharmax
與varbinarymax。 我試過執行COALESCE
,意思是T2.BODY AS COALESCE(BODY_BIN, BODY_TEXT)
,但它不起作用。 也不
COALESCE(BODY_BIN, BODY_TEXT) AS BODY
T2.BODY AS BODY
再次 - 在傳統表中,我們有T1有兩列 - BODY_BIN和BODY_TEXT。用戶插入一個值並將另一個值留空,因爲body是二進制或文本,但不是兩者。新接口有一個只有一列BODY(varbinarymax)的表T2,我被要求刪除表T1並創建一個同名的視圖。爲了保持向後的可比性,他們應該仍然能夠執行「插入到T1值X,Y」(X是DATA_BIN或NULL,Y是DATA_TEXT或NULL),但是內容(取自X或Y)應該被翻譯成T2表中的ONE列 - BODY。 我不知道如何拉這個。
你能幫我嗎?
感謝,
尼莉
我不知道我理解。 COALESCE(,)應該有效。 –
2011-05-24 10:06:32
是的,但請注意方向是不同的 - 通常你「地圖」表來查看,意思COALESCE(DATA_BIN,DATA_TEXT)作爲T.BODY,但我需要映射從視圖的最大值,這意味着T2.BODY AS COALESCE DATA_BIN,DATA_TEXT)或類似的東西... – Nili 2011-05-24 11:19:57
我是否正確讀取這個:你想要改變列名取決於哪個數據類型被返回? No Tobias。 – tobias86 2011-05-24 11:20:14