SWITCH 输出的 IIF 长度限制为 255

IIF of SWITCH output is limited at length 255

对于 Enterprise Architect 中的自定义 SQL 查询,我们使用 IIF 或 SWITCH,但它们的输出似乎都有限制。

有什么方法可以绕过这个限制吗?

作为一个简单的例子,下面是一个带有限制的查询

select 
switch(true, note) as NoteAfterSwitch,
Cstr(switch(true, note)) as NoteAfterCstrSwitch,
switch(true, cstr(note)) as CstrNoteAfterSwitch,
Cvar(switch(true, note)) as NoteAfterCVarSwitch,
switch(true, cvar(note)) as CvarNoteAfterSwitch,
Note
from t_object as t
where t.object_id = 115

NoteAfterSwitch 列限制在 255 个字符。 而原始注释有超过 255 个字符。 我们要使用原来的尺寸。

在 NoteAfterCstrSwitch 和 CstrNoteAfterSwitch 列中,我们尝试使用 CStr,但也没有成功。

在 NoteAfterCvarSwitch 和 CvarNoteAfterSwitch 列中,我们尝试使用 Cvar,但也没有成功。

编辑 我们也尝试过使用JET 4.0,可惜没有成功。它导致了混乱的输出:

我们的实习生 (Kevin) 在 Austrian blog 上找到了解决方案。 我们在 IIFSwitch 之前进行了隐式转换。 这可以用一个空的 union:

来完成
SELECT  Note as notes
FROM    t_object AS o
where   1 = 0
union all
select  switch(true, o.note)
FROM    t_object AS o
WHERE   o.Object_ID = 115

这个技巧也适用于其他隐含的不需要的投射动作。