使用'alter session set nls_sort'似乎不適合我。我用sqlplus v11.2.0.3.0 x64和嘗試應用簡單的步驟在http://docs.oracle.com/cd/E18283_01/appdev.112/e10766/tdddg_globalization.htm#CACJEJIBOracle NLS_SORT不能通過ALTER SESSION工作?
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
「例9-10 NLS_SORT影響語言排序」在Oracle文檔中找到根據該DOCO,排序上面的順序應該改變了,但沒有改變。但是,如果我申請的NLS_SORT作爲查詢本身的一部分,我得到了正確的resutls:
SELECT * FROM temp ORDER BY NLSSORT(name, 'NLS_SORT=SPANISH_M');
Result:
NAME
---------------
laguna
loco
llama
缺少什麼我在這裏? Thx提前。
這是一個奇怪的問題。我無法在我的機器上或[SQL小提琴](http://sqlfiddle.com/#!4/35901/7)上覆制它。也許你正在碰到一些奇怪的錯誤。你對不同的客戶有同樣的問題嗎?您可能想要發佈您的客戶端和數據庫版本,以及來自v $ parameter的'select name,value'的結果,其中名稱如'%nls%';'。 –
我無法複製它。我在SQLPlus和SQLDeveloper中試過了。它應該真的有用。我的版本是「Oracle數據庫11g企業版版本11.2.0.2.0」。 – hol
我也使用了11.2.0.2.0。奇怪的是,它適用於使用11.2.0.3.0的同事,但不適用於其他人。我將嘗試卸載/重新安裝。 – Paul