7

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

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

这是Firebird中的错误吗?

编辑

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

4

1 回答 1

4

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

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

于 2013-11-02T08:30:12.257 回答