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 上找到了解决方案。
我们在 IIF
或 Switch
之前进行了隐式转换。
这可以用一个空的 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
这个技巧也适用于其他隐含的不需要的投射动作。
对于 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 上找到了解决方案。
我们在 IIF
或 Switch
之前进行了隐式转换。
这可以用一个空的 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
这个技巧也适用于其他隐含的不需要的投射动作。