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

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

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'))

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

火鸟中的这个错误?

编辑

我测试过使用新的数据库,问题依然存在。


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

因此,如果第一个参数为false,并且当您将空间存储到varchar字段中,它们将被保留,那么iif()返回"item "

链接地址: http://www.djcxy.com/p/75211.html

上一篇: White spaces when updating varchar field using iif in firebird

下一篇: How can I compile Boost with VS2013 (64