SQL视图中的双列
|
我们有一个旧接口,将旧接口插入表T1中,值values0ѭ,
\"BODY_BIN\"(varbinarymax)
。
当前,它仅插入到其中一列,而另一列为NULL。
现在,我们实现了一个新接口-表T2仅具有\"BODY\"(varbinarymax)
列。
我需要创建一个视图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
vs. 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是二进制或文本的,但不能同时是两者。新接口的表T2仅具有一列BODY(varbinarymax),我被要求删除表T1并创建一个具有相同名称的视图。意味着为了保持向后的可比性,它们仍应能够执行“插入T1值X,Y \”(X为DATA_BIN或NULL,Y为DATA_TEXT或NULL),但是内容(取自X或Y) )应该转换为T2表中的ONE栏-BODY。
我不知道如何提出这一点。
你能帮助我吗?
谢谢,
妮莉
没有找到相关结果
已邀请:
2 个回复
济畦刨
COALESCE失败,因为它采用了最高优先级的数据类型(varbinary)。不允许隐式强制转换。
也会失败 您需要明确的CAST
要么
编辑:我现在明白这个问题了……也许
Edit2:类似这样的东西(未经测试)保持相同的写接口。通常,我只会维护一个读取接口,因此会造成混乱。
琳娘
或
字段中加入字段是一个坏主意,因为它们无法被索引。准备表扫描! 同一列中的数据类型不一致,这是一个问题。 尝试: