Oracle資料庫的編碼設定可使用下面SQL查詢。
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
-- or
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER IN ('NLS_CHARACTERSET');
-- or
SELECT USERENV('LANGUAGE') FROM DUAL;
查詢結果類似如下
+------------------+----------+
| PARAMETER | VALUE |
+------------------+----------+
| NLS_CHARACTERSET | AL32UTF8 |
+------------------+----------+
而如果你查詢以下,可以看到另一個NLS_NCHAR_CHARACTERSET參數。
SELECT * FROM NLS_DATABASE_PARAMETERS;
NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET的差別是:
NLS_CHARACTERSET定義CHAR, VARCHAR2,CLOB;
而NLS_NCHAR_CHARACTERSET定義NCHAR,NVARCHAR2,NCLOB
如果你的NLS_CHARACTERSET是ZHT16BIG5則為BIG5編碼,每個中文字佔2 Bytes的長度;
如果是AL32UTF8則每個中文字佔3 Bytes的長度。
可使用LENGTHB函式來確認中文占的bytes長度。
SELECT LENGTHB( '中文' ) AS BYTES_LENGTH FROM DUAL;
參考:
沒有留言:
張貼留言