Oracle VARCHAR2
儲存中文的話長度要設為多少?
以UTF-8來看,一個中文字占3 bytes,所以如果要儲存30個中文,則可以宣告如下。
VARCHAR2(90) // 等同於VARHCAR2(90 byte),可存30個中文字
VARCHAR2(90 byte) // 可存30個中文字
VARCHAR2(30 char) // 可存30個中文字
所以如果是用VARCHAR2(90 byte)
,則前端表單對應的輸入欄位的maxlength
就應設為30,避免因為插入的中文字長度超過上限造成ORA-12899:資料欄的值太大
錯誤。
設定為
VARHAR2()
計算UTF-8字串長度的網站UTF-8 string length & byte counter
不過說了這麼多,存中文就用NVARCHAR2
就好了,儲存的長度是依照字元數而不是Byte,所以就不用擔心以上問題了。
2 則留言:
NVARCHAR2 在UTF8中,中文一樣是3Bytes 喔
謝謝樓上的補充說明
張貼留言