Rey*_*ldi 7 sql firebird firebird2.5
执行此查询时,我看到奇怪的结果
update sd_invodt set line_type=iif(is_promo=1, 'campaign', 'item')
Run Code Online (Sandbox Code Playgroud)
line_type字段中的值为"item ".有价值的空白.但是当我执行这个查询时
update sd_invodt set line_type='item'
Run Code Online (Sandbox Code Playgroud)
我没有白色空间.
现在我必须使用trim作为解决方法
update sd_invodt set line_type=trim(iif(is_promo=1, 'campaign', 'item'))
Run Code Online (Sandbox Code Playgroud)
我使用最新的firebird 2.5.Line_type是varchar(15).
这是Firebird中的错误吗?
编辑
我已经使用新数据库进行了测试,问题仍然存在.
结果类型iif()取决于输入,如果是字符串,结果类型似乎是最长输入字符串的长度char(x)。x因此,"item"将用 4 个空格填充,使其与“活动”一样长。我认为这是设计使然,但您可能需要输入FB Issuetracker 的票证。
因此,如果第一个参数为 false,则iif()返回,并且当您将空格存储到字段时,它们将被保留。"item "varchar