我们有一个传统界面,插入到表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