【发布时间】:2019-10-08 08:43:33
【问题描述】:
下面的sql select查询从表中检索数据。
SELECT DISTINCT FRUIT_NAME,FRUIT_ID FROM Fruits ORDER BY FRUIT_NAME ASC
我使用了“ORDER BY FRUIT_NAME ASC”,它根据 Assending order 获取结果,如下所示。
结果:
苹果
香蕉
芒果
杏子
蓝莓
我想要一个不区分大小写的搜索结果,如下所示。
苹果
杏子
香蕉
蓝莓
芒果
我不想使用 upper() 或 lower(),因为它可能会影响较大表数据的性能。
COLLATE NOCASE 也不适用于 db2。以下是我使用时遇到的错误 db2 中 select sql 查询中的 COLLATE NOCASE。
1) [Code: -104, SQL State: 42601] ILLEGAL SYMBOL "COLLATE".
有没有办法使用 db2 从 sql select 查询中检索不区分大小写的数据?
【问题讨论】:
-
您的 Db2 服务器平台是什么(Z/os、i 系列、Linux/Unix/Windows)?您的 Db2 服务器版本是什么?这些事实应该始终存在于您的问题中。
-
感谢您的回复。我使用的是 DB2 10.0.22,平台是 windows。
-
您的问题经常被问到。做你的研究。常见的方法包括使用生成的列(并按生成的列排序),或使用索引扩展,或按 collation_key_bit() 函数排序,并为您的语言/地区提供合适的参数。示例链接 developer.ibm.com/articles/making-db2-case-insensitive 和 ibm.com/developerworks/data/library/techarticle/dm-0712stolze/…