在我工作的地方,我们有一个 IBM Power System,用于数据存储和访问。它目前运行的是 iOS 6.1。我们在 IIS 服务器上有一个网站,该网站从该服务器提取数据,并且有几个不同的 Web 应用程序执行不同的功能。所有这些应用程序都具有某种搜索功能。其中两个网站存在区分大小写的问题。
事情开始变得有点棘手。这个问题只有在我们在 IBM 系统上从 v5r4 升级到 v6r1 时才开始发生。不过,这个问题并不是在所有网站上都发生的(总共 8 个,2 个有问题)。这很奇怪,因为它们都使用相同的 IO 程序。该网站是由另一方开发的,他们能够远程测试我们的数据库。他们运行的是 v7r1,在将网站与我们的数据库一起使用时没有遇到任何问题。该网站通过 ODBC 访问数据,我尝试重新配置 DSN。其中一位支持人员甚至让我用 .reg 文件注册他们的确切 ODBC 配置,但仍然没有结果。他们和我都已经没有主意了,所以现在,我们求助于帮助链接。我碰巧正在使用同一台服务器进行查询的另一个网站上工作,并且该网站中的 ODBC 连接具有相同的行为……名称和任何其他搜索字段似乎都区分大小写。我知道,因为我突然发现我的网站无法正常工作,所以我的网站在升级到 v6r1 之前不区分大小写。我们还使用第三方应用程序来运行 SQL 查询,并且在同一 DSN 上,此应用程序中的查询不区分大小写。所以如您所见,我找不到任何关联。有谁知道 IBM DSN 的问题或 IBM 服务器/文件系统的大小写区分问题可能导致某些查询出现这种情况?
答案1
如果怀疑是 ODBC 驱动程序,请检查 DSN。选择“语言”选项卡,然后选择排序类型“根据语言 ID 排序”。然后选择您的语言 ID。默认设置为“根据 *HEX 值排序”。
如果怀疑是 IBM i 服务器,请让管理员检查服务器作业的 SRTSEQ 属性(可能是 QZDASOINIT),将其设置为 *LANGIDSHR。默认值为 *HEX。显然,这将影响对 IBM 服务器的所有 ODBC 访问,而不仅仅是您的访问。但如果升级前就是这样,也许最好将其恢复原状。
如果查询明确处理了单一大小写,则可能会更加透明。因此,不是 ...WHERE CUSTNAME LIKE 'JONES%'...,而是 ...WHERE UPPER(CUSTNAME) LIKE 'JONES%'...