使用firebird中的iif更新varchar字段时的空格

时间:2013-11-02 05:42:28

标签: sql firebird firebird2.5

执行此查询时,我看到了奇怪的结果

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

line_type字段中的值为"item "。有价值的空白。 但是当我执行这个查询时

update sd_invodt set line_type='item'

我没有白色空间。

现在我必须使用trim作为解决方法

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

我使用最新的firebird 2.5。 Line_type是varchar(15)。

Firebird中有这个错误吗?

修改

我已经使用新数据库进行了测试,问题仍然存在。

1 个答案:

答案 0 :(得分:4)

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

因此,如果第一个参数为false,则iif()返回"item ",当您将空格存储到varchar字段时,它们会被保留。