使用“alter session set nls_sort”似乎对我不起作用。我正在使用 SQLPlus v11.2.0.3.0 x64 并尝试应用位于http://docs.oracle.com/cd/E18283_01/appdev的 Oracle 文档中的“示例 9-10 NLS_SORT 影响语言排序顺序”的简单步骤.112/e10766/tdddg_globalization.htm#CACJEJIB
CREATE TABLE temp (name VARCHAR2(15));
INSERT INTO temp (name) VALUES ('laguna');
INSERT INTO temp (name) VALUES ('llama');
INSERT INTO temp (name) VALUES ('loco');
SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_SORT';
Result: BINARY
SELECT * FROM temp ORDER BY name;
Result:
NAME
---------------
laguna
llama
loco
ALTER SESSION SET NLS_SORT=SPANISH_M;
SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_SORT';
Result: SPANISH_M
SELECT * FROM temp ORDER BY name;
Results are the same:
NAME
---------------
laguna
llama
loco
根据文档,上面的排序顺序应该已经改变,但它没有。但是,如果我将 NLS_SORT 作为查询本身的一部分应用,我会得到正确的结果:
SELECT * FROM temp ORDER BY NLSSORT(name, 'NLS_SORT=SPANISH_M');
Result:
NAME
---------------
laguna
loco
llama
我在这里想念什么?提前谢谢。