2013-11-02 28 views
7

使用IIF varchar字段,当我看到奇怪的结果来执行这个查询白色空间中更新火鸟

update sd_invodt set line_type=iif(is_promo=1, 'campaign', 'item') 

时LINE_TYPE字段中的值将是"item "。有价值的空白。 但是当我执行此查询时

update sd_invodt set line_type='item' 

我没有得到空格。

现在我必须使用装饰的解决办法

update sd_invodt set line_type=trim(iif(is_promo=1, 'campaign', 'item')) 

我用最新的火鸟2.5。 Line_type是一个varchar(15)。

火鸟的这个错误?

编辑

我一直在使用新的数据库进行测试,但问题依然存在。

回答

4

iif()的结果类型取决于输入,如果字符串结果类型似乎为char(x),其中x是最长输入字符串的长度。因此,"item"将填充4个空格,以使其与“广告系列”一样长。我认为这是通过设计,但您可能想要输入FB issuetracker的票。

因此iif()返回"item "在第一个参数为false的情况下,当您将空间存储到varchar字段它们被保留。

+3

这不是一个错误,请参阅[CORE-4147](http://tracker.firebirdsql.org/browse/CORE-4147) –