網頁

2017/12/4

如何查詢Oracle 字元集(Character Set)編碼

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_CHARACTERSETNLS_NCHAR_CHARACTERSET的差別是:
NLS_CHARACTERSET定義CHARVARCHAR2CLOB
NLS_NCHAR_CHARACTERSET定義NCHARNVARCHAR2NCLOB

如果你的NLS_CHARACTERSETZHT16BIG5則為BIG5編碼,每個中文字佔2 Bytes的長度;
如果是AL32UTF8則每個中文字佔3 Bytes的長度。

可使用LENGTHB函式來確認中文占的bytes長度。

SELECT LENGTHB( '中文' ) AS BYTES_LENGTH FROM DUAL;

參考:

沒有留言:

張貼留言