Informix DB LIKE查询中的UPPER和LOWER函数不适用于表中的所有条目



背景信息:

  • IBM Informix Dynamic Server版本12.10.FC14WE
  • DB_LOCALE=et_EE.utf8
  • 表有一个ID主键,没有索引
  • 列数据类型lvarchar(-1(

表列的名称类似于";第一公司"第二公司"第三";。要查找名称匹配,正在使用UPPER函数。问题示例:

  • SELECT * FROM companies WHERE UPPER(name) LIKE 'FIRST%';-未给出任何结果
  • SELECT * FROM companies WHERE UPPER(name) LIKE 'SECOND%';-给出预期结果(第二公司(
  • SELECT * FROM companies WHERE name LIKE 'FIRST%';-给出预期结果(第一家公司(
  • SELECT * FROM companies WHERE UPPER(name) LIKE 'FIRST%' OR name LIKE 'FIRST%'-未给出任何结果

是什么原因导致了这种行为,以及如何解决?也许同一数据库表中的条目在某些方面有所不同?

正如问题评论中所提到的,可能存在某种数据损坏,可以通过删除和重新创建有问题的条目来修复(更新没有效果(。由于这方面的系统相当复杂,并且涉及遗留技术,我们没有深入了解根本原因。出于其他一些需要和考虑,我们创建了一个单独的列,其中公司名称始终为大写,并调整了必要的选择查询,以在不使用UPPER函数的情况下使用该查询。

相关内容

  • 没有找到相关文章

最新更新