Can someone please explain why lowercase i
in string abcdefghijklmnopqrstuvwxyz
is mapped to ?
whereas all other alphabets are correctly mapped to corresponding uppercase alphabets.
SQL> ALTER SESSION SET NLS_SORT="xturkish";
Session altered.
SQL>
SQL> begin
2 DBMS_OUTPUT.PUT_LINE('NLS_UPPER(abcdefghijklmnopqrstuvwxyz) = '
3 || NLS_UPPER('abcdefghijklmnopqrstuvwxyz'));
4 end;
5 /
NLS_UPPER(abcdefghijklmnopqrstuvwxyz) = ABCDEFGH?JKLMNOPQRSTUVWXYZ
PL/SQL procedure successfully completed.
SQL>
Update: If nls_sort is set to BINARY, the mapping happens as expected, lowercase i
maps to a plane English alphabet I
The capital
i
in Turkish isİ
(U+0130: Latin Capital Letter I with Dot Above), see https://codepoints.net/U+0130Looks like your Database character set does not support this character, what is your Database character set? Check with
I assume
should work.
You must set your
NLS_LANG
and console codepage properly for correct output. Here are some working examples: