ORACLE資料庫NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET區別
使用Select * from nls_database_parameter去檢視的字符集,發現查到兩個字符集,NLS_CHARACTERSET 和NLS_NCHAR_CHARACTERSET。如下:
SQL> select * from nls_database_parameters;
PARAMETER VALUE ------------------------------ -------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET ZHS16GBK NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE ------------------------------ -------------------- NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXF F AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXF F AM TZR
NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE
PARAMETER VALUE ------------------------------ -------------------- NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_RDBMS_VERSION 10.2.0.1.0
已選擇20行。
網上查閱了一下,得到以下的結果:
NLS_CHARACTERSET是資料庫字符集,NLS_NCHAR_CHARACTERSET是國家字符集 ORACLE中有兩大類字元型資料,VARCHAR2是按照資料庫字符集來儲存資料。而NVARCHAR2是按照國家字符集儲存資料的。同樣,CHAR和NCHAR也一樣,一是資料庫字元符,一是國家字符集。 字符集不同,二進位制碼的組合就不同。 比如有一串二進位制資訊:1101,0110,1101,0000,1011,1001,1111,1010,按照16位雙位元組GBK字符集理解,可以代表“中國”兩個字。如果單位元組的字符集,這一串二進位制代表ASC碼為214、208、185、250的四個怪字元。 這就是字符集的作用,就是以什麼樣的形式理解資訊。
--------------------- 本文來自 zhouyong0 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/zhouyong0/article/details/8111139?utm_source=copy