这与使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 sort变得不区分大小写。设置NLS_COMP参数有什么好处吗?
答案 0 :(得分:3)
NLS_COMP
和NLS_SORT
的效果略有不同。顾名思义,NLS_COMP
用于比较。顾名思义,NLS_SORT
用于排序。将NLS_COMP
设置为LINGUISTIC
会导致比较遵循排序规则,从而导致比较使用NLS_SORT
设置。您可以在尝试时看到差异:
SELECT 1 FROM DUAL WHERE 'A' = 'a';
使用NLS_COMP = BINARY
,比较结果为false。使用NLS_COMP = LINGUISTIC
和NLS_SORT = BINARY_CI
,比较结果为真。
是否应该设置这取决于您希望从查询中获得什么结果。