1. 程式人生 > >oracle 中char、varchar和varchar2的一些問題

oracle 中char、varchar和varchar2的一些問題

在之前的專案中遇到一個問題:根據頁面上輸入的條件查詢資料,頁面上為“22”,在資料庫中查不出來,用工具一看,確實有22這條記錄。為什麼查不出來呢?

原因後來找到了,是因為資料庫中的資料不是“22”,而是“22  ”,看出來了嗎?多了兩個空格。坑爹啊!當時因為忙,也沒在意,現在在看sql時,總算是真正找著原因了。

下面就來看看標題中的3個具體有什麼不同吧。

char : 儲存長度固定且長度小於2000的字元或者位元組,位數不夠時右邊補上空格。比如定義長度為10 ,char(10),實際值為“1234”,則後面6為為空格。

varchar:sql中的資料型別,在oralce也支援,但是不推薦使用,可以儲存變長的小於4000 的字元或者位元組。

varchar2:oracle中的資料型別,推薦使用,具有良好的額相容性,可以儲存小於4000的變長字元或位元組,長度不足時不會補空格。

注:

1.char 比 varchar 效率高,

2.varchar 型別時空字串為“”,而varchar2型別為null

3.還是要注意細節的東西,有時候坑太深了。

參考:

http://yr512656630.iteye.com/blog/775670

http://blog.csdn.net/defonds/article/details/4302695

學習學習