使Oracle排序不区分大小写?

时间:2014-12-22 23:44:17

标签: sql oracle sorting nls-sort nls-comp

这与使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参数有什么好处吗?

1 个答案:

答案 0 :(得分:3)

NLS_COMPNLS_SORT的效果略有不同。顾名思义,NLS_COMP用于比较。顾名思义,NLS_SORT用于排序。将NLS_COMP设置为LINGUISTIC会导致比较遵循排序规则,从而导致比较使用NLS_SORT设置。您可以在尝试时看到差异:

SELECT 1 FROM DUAL WHERE 'A' = 'a';

使用NLS_COMP = BINARY,比较结果为false。使用NLS_COMP = LINGUISTICNLS_SORT = BINARY_CI,比较结果为真。

是否应该设置这取决于您希望从查询中获得什么结果。