char varchar java_在数据库中varchar与char的区别
char是固定長度類型
varchar是可變的長度類型
char和varchar類型相似,但是它們的存儲和檢索方式不同。在MySQL5.0.3,它們在最大長度和是否保留尾部空格也不相同。
char和varchar定義了字符串的最大長度。例如,char(30)可以放30個字符。
char列的長度在你建表的時候,就是你定義的固定長度。值的范圍是0~255。char值存儲的時候,右部以空格來填充到指定的長度。當檢索char的時候,會自動去掉尾部的空格。
varchar列是變長的。在MySQL5.0.3之前可以定義的長度是0~255,之后可以定義到0~65535。在MySQL5.0.3及以后的版本中varchar列的有效長度,受行的最大值和使用的字符限制。
對比char,varchar,加上前綴的數據長度是當做一個字節還是兩個字節存儲。這個前綴的長度表明了值的字節數。如果值不超過255的話,這個列用一個字節的長度,如果這個值可能超過255個字節,那么就使用兩個字節的長度。
如果嚴格的SQL模式沒有啟用,你分配了一個char或者varchar列超出了列的最大長度,那么這個值就會被截短以填充列,這時候就會產生一個警告。對于截短的非空格字符,你可以設置嚴格的SQL模式,來產生一個錯誤。
對于varchar列來說,SQL模式在啟用的時候,大量的尾部空格在插入之前都會被截短,產生一個警告。對于char列來說,不管SQL模式是否被啟用,都會靜默地去掉插入值的過量的尾部空格。
varchar值存儲的時候是不會填充的。如何處理尾部空格,取決于版本。在MySQL5.0.3中,當值存儲和檢索的時候,保留尾部空格,和標準的SQL保持一致。在MySQL5.0.3之前,值被保存到varchar列的時候,尾部空格會被剔除。這樣也就意味著檢索值的時候,也不存在這些空格。
在MySQL5.0.3之前,如果你需要一個不去掉尾部空格的數據類型的時候,要考慮BLOB或者TEXT類型。同樣當你存儲加密數據或者壓縮數據的時候,也要使用BLOB列,而不是char或者varchar列,來避免需要改變值的時候,尾部空格的潛在問題。
下面的表格來說明char和varchar的存儲方式和顯示結果的差別。(假設列用的很簡單的字符,使用latin1編碼)
總結
以上是生活随笔為你收集整理的char varchar java_在数据库中varchar与char的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA软件图片浏览下载_java模拟浏
- 下一篇: java捕捉音频,如何捕获在Java中的