在oracle中乙個字元特別是中文字元佔幾個位元組是與字符集有關的。
比如gbk,漢字就會佔兩個位元組,英文1個;如果是utf-8,漢字一般佔3個位元組,英文還是1個。但是一般情況下,我們都認為是兩個位元組處理,因為oracle安裝時候預設我們都選擇gbk的編碼格式,但是我們在頁面做輸入字串長度的校驗的時候,還是以資料庫設計字段最大長度除3來作為最大長度-----防止資料庫移植時設定不同編碼格式。
檢視字串占用的字元數:
select length('12中華') from dual; --4
檢視字串占用的位元組數:
select lengthb('12中華') from dual; --8
nvarchar2的乙個漢字字元都是占用兩個位元組的,與字符集無關:
select length(n'中華1') from dual; --3
select lengthb(n'中華1') from dual; --6
補充:(1)
查詢字符集語句: select userenv('language') from dual; (simplified chinese_china.al32utf8)
查詢結果分為三部分: nls_lang = language_territory.charset 它有三個組成部分(語言、地域和字符集), 其中: language 指定伺服器訊息的語言,territory 指定伺服器的日期和數字格式,charset 指定字符集 。
(2)如何檢視oracle的字符集,日期格式,語言等?
sys>show parameter nls; --得不到具體全面的value
sys>select * from nls_database_parameter; --nls_database_parameter表才是最詳細的
ORACLE資料庫漢字占用位元組數
oracle資料庫漢字占用位元組數 之前本人認為乙個漢字都是佔兩個位元組的,mssql server如此 至少在我的理解範圍之內,如果有誤還請大家糾正 但是最近在使用oracle資料庫,發現了一些特殊的東西,那就是,當你用兩個函式 分別是length和lengthb,這兩個函式到底是幹什麼用的,我想...
占用位元組數求法
字串占用位元組數 ansi char szstr abc 占用位元組數求法 sizeof szstr char psz defgh 占用位元組數求法 strlen psz sizeof char unicode wchar t szwstr l abc 占用位元組數求法 sizeof szwstr ...
List與陣列占用位元組數
想看一下list序列化後占用多少個 位元組,測試程式如下 public static void main string args throws ioexception system.out.println 元素數 list.size bytearrayoutputstream baos new by...