【发布时间】:2021-08-18 04:31:18
【问题描述】:
我在表“order”中定义了一个 varchar 列“qty”,其中包含 2 行数据,如下所示
| qty |
|---|
| 3 |
| 3 1/9 |
当我尝试使用选择查询时
select * from order where qty like '3 %';
返回具有数量 3 和 3 1/9 的两行,而我认为我只会得到与我的查找匹配的 3 1/9,例如“3 %”,
我什至尝试使用trim(qty) like '3 %' 也得到相同的结果;我得到了两个记录。
第一行 3 后没有空格。
不知道为什么?有人可以帮我吗?
【问题讨论】:
-
我认为问题在于 Informix 有效地填充列并在填充列上进行比较。尾随空格是一个复杂的问题。在普通 CHAR(n) 类型中,如果您插入一个具有 m 个字节 (m
-
@JonathanLeffler 感谢您提供信息,我了解 char 数据类型的填充,但这里我有 varchar 数据类型,我检查了记录末尾是否有空格(对于第一个记录上面显示的示例),它只有 3 个数据
-
我不是在为正在发生的事情辩护;我只是说明正在发生的事情。你提供弹药来改变它。会有阻力(“向后兼容性”)。
-
您使用的是哪个版本的 Informix,您在哪个平台上使用它?系统存在bug CQ idsdb00109716;如果您有支持,您可以注册一个反对它的案例,但要获得修复,您需要升级。该错误已被创建,仅;它还没有被安排,更不用说修复了。
-
Informix 版本:Linux 平台上的 IBM Informix Dynamic Server 版本 12.10.FC7
标签: informix