4000位元組長度。
比如,varchar2(100),就相當於varchar2(100 byte),表示最大位元組數是100,該欄位最多能容納100個位元組,強調空間大小。
由於我們描述的是位元組,因此,儲存漢字等字元時,如果資料庫用的是GBK編碼,那麼一個漢字將佔用2個位元組,最多能存50個漢字,如果你的資料庫用的是UTF8編碼,那麼一個漢字將佔用3個位元組,最多能存33個漢字。
擴充套件資料:
實際應用中,很可能會出現這種寫法:varchar2(1400char),這個欄位最長不能超過1400個字元,可能會存入1399個字元。
但是,如果這1399個字元都是漢字,字元長度並沒有超過1400,但實際上損失了一部分資料。
因為1399個漢字,按UTF8編碼來說,需要佔用1399*3=4197個位元組,而最大長度就是4000位元組,一個也不能多,因此多出來的197個位元組,都會抹去,而整個過程中,無任何錯誤提示。
對於GBK編碼的資料庫而言,安全的寫法為:varchar2(2000 char)、nvarchar2(2000)。
對於UTF8編碼的資料庫而言,安全的寫法為:varchar2(1333char)、nvarchar2(2000)。
4000位元組長度。
比如,varchar2(100),就相當於varchar2(100 byte),表示最大位元組數是100,該欄位最多能容納100個位元組,強調空間大小。
由於我們描述的是位元組,因此,儲存漢字等字元時,如果資料庫用的是GBK編碼,那麼一個漢字將佔用2個位元組,最多能存50個漢字,如果你的資料庫用的是UTF8編碼,那麼一個漢字將佔用3個位元組,最多能存33個漢字。
擴充套件資料:
實際應用中,很可能會出現這種寫法:varchar2(1400char),這個欄位最長不能超過1400個字元,可能會存入1399個字元。
但是,如果這1399個字元都是漢字,字元長度並沒有超過1400,但實際上損失了一部分資料。
因為1399個漢字,按UTF8編碼來說,需要佔用1399*3=4197個位元組,而最大長度就是4000位元組,一個也不能多,因此多出來的197個位元組,都會抹去,而整個過程中,無任何錯誤提示。
對於GBK編碼的資料庫而言,安全的寫法為:varchar2(2000 char)、nvarchar2(2000)。
對於UTF8編碼的資料庫而言,安全的寫法為:varchar2(1333char)、nvarchar2(2000)。