使用DB2检索不区分大小写的SQL Select查询

使用DB2检索不区分大小写的SQL Select查询,db2,db2-luw,Db2,Db2 Luw,下面的sql select查询从表中检索数据 SELECT DISTINCT FRUIT_NAME,FRUIT_ID FROM Fruits ORDER BY FRUIT_NAME ASC 我使用了“ORDER BY FRUIT_NAME ASC”,它根据如下所示的确认顺序获取结果 结果: 苹果 班纳纳 芒果 杏子 蓝莓 我想要一个不区分大小写的搜索结果,如下所示。 苹果 杏子 班纳纳 蓝莓 芒果 我不想使用upper()或lower(),因为这可能会影响较大表数据的性能 另外,colla

下面的sql select查询从表中检索数据

SELECT DISTINCT  FRUIT_NAME,FRUIT_ID  FROM Fruits ORDER BY FRUIT_NAME ASC
我使用了“ORDER BY FRUIT_NAME ASC”,它根据如下所示的确认顺序获取结果

结果:

苹果

班纳纳

芒果

杏子

蓝莓

我想要一个不区分大小写的搜索结果,如下所示。

苹果

杏子

班纳纳

蓝莓

芒果

我不想使用upper()或lower(),因为这可能会影响较大表数据的性能

另外,collatenocase不适用于db2。下面是我使用时遇到的错误 在db2中的selectsql查询中整理NOCASE

1) [Code: -104, SQL State: 42601]  ILLEGAL SYMBOL "COLLATE".

是否有任何方法可以使用db2从sql select查询中检索不区分大小写的数据

您可以使用
LOWER
功能订购:

SELECT DISTINCT FRUIT_NAME, FRUIT_ID
FROM Fruits
ORDER BY LOWER(FRUIT_NAME);

当然,这意味着,
orderby
步骤不能使用索引。如果您需要快速订购,不管您的情况如何,您可以考虑存储一个小写版本的列,作为一个选项。

什么是您的DB2服务器平台(Z/OS,I系列,Linux /UNIX/Windows)?您的Db2服务器版本是什么?这些事实应该一直在你的问题中。谢谢你的回答。我使用的是DB210.0.22,平台是windows。您的问题经常被问到。做你的研究。常用的方法包括使用生成的列(并按生成的列排序),或使用索引扩展,或使用带有适合您的语言/区域的参数的排序规则\键\位()函数。示例链接和