在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 "
。
上一篇: White spaces when updating varchar field using iif in firebird