执行此查询时我看到奇怪的结果
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 中的错误吗?
编辑
我已经使用新数据库进行了测试,问题仍然存在。
最佳答案
iif()
的结果类型取决于输入,如果是字符串,结果类型似乎是 char(x)
哪里x
是最长输入字符串的长度。因此"item"
将填充 4 个空格以使其与“广告系列”一样长。我认为这是设计使然,但您可能想输入一张前往 FB issuetracker 的票。 .
所以iif()
返回 "item "
如果第一个参数为 false 并且您将空格存储到 varchar
场,他们被保留下来。
关于sql - 在 firebird 中使用 iif 更新 varchar 字段时出现空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19739310/