【发布时间】:2015-02-21 02:39:53
【问题描述】:
这与使 oracle 排序不区分大小写有关。我见过的大多数解决方案都提到在会话参数下面设置:
ALTER SESSION SET NLS_COMP = LINGUISTIC;
ALTER SESSION SET NLS_SORT = BINARY_CI;
默认情况下 NLS_COMP 是 BINARY。
我发现如果我只是将 NLS_SORT 设置为 BINARY_CI 而没有将 NLS_COMP 设置为 LINGUISTIC,它仍然有效,即 oracle 排序变得不区分大小写。设置 NLS_COMP 参数有什么好处吗?
【问题讨论】:
-
如果我想要一个不区分大小写的搜索,我会在搜索字段上使用上或下功能...说 UPPER(text) like '%SEARCH_STRING%'
-
除非您有数百个查询需要不区分大小写的排序,否则我只会按 lower(field) 或 nlssort(field,'nls_sort=binary_ci') 排序。否则,您是在用安全性换取代码的简单性——大多数情况下,依赖于 nls 的代码是等待发生的意外。几年后,一些新的维护者或新软件将设置自己的会话参数,您的查询将默默地失败。
-
我们确实有很多查询需要不区分大小写的排序。我们的要求是,如果我们按字符串排序,它必须不区分大小写
标签: sql oracle sorting nls-sort nls-comp