执行此查询时,我看到了奇怪的结果
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中有这个错误吗?
修改
我已经使用新数据库进行了测试,问题仍然存在。
答案 0 :(得分:4)
iif()
的结果类型取决于输入,如果是字符串,结果类型似乎是char(x)
,其中x
是最长输入字符串的长度。因此,"item"
将填充4个空格,只要“广告系列”即可。我认为这是设计的,但您可能想要输入FB issuetracker的票证。
因此,如果第一个参数为false,则iif()
返回"item "
,当您将空格存储到varchar
字段时,它们会被保留。