在MySQL中有兩個欄位類型容易讓人感覺混淆,那就是TEXT與BLOB,特別是自己寫部落格程式的部落客不知道改為自己的部落格正文欄位選擇TEXT還是BLOB類型。
下面給出幾點區別:
一、主要差異
TEXT與BLOB的主要差異就是BLOB保存二進位數據,TEXT保存字元資料。目前幾乎所有部落格內容裡的圖片都不是以二進位儲存在資料庫的,而是把圖片上傳到伺服器然後正文裡使用標籤引用,這樣的部落格就可以使用TEXT類型。而BLOB就可以把圖片換算成二進位儲存到資料庫中。
二、類型區別
BLOB有4種類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長度不同。
TEXT也有4種類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些類型同BLOB類型一樣,有相同的最大長度和儲存需求。
三、字元集
BLOB列沒有字元集,並且排序並比較基於列值位元組的數值值。 TEXT列有一個字元集,並且根據字元集的校對規則對值進行排序和比較
四、大小寫
在TEXT或BLOB列的儲存或擷取過程中,不存在大小寫轉換,都一樣!
五、嚴格模式
運行在非嚴格模式時,如果你為BLOB或TEXT列分配一個超過該列類型的最大長度的值值,值被截取以保證適合。如果截掉的字元不是空格,將會產生一則警告。使用嚴格SQL模式,會產生錯誤,並且值將被拒絕而不是截取並給予警告。
六、其它
當儲存或擷取BLOB和TEXT列的值時不刪除尾部空格。
對於BLOB和TEXT列的索引,必須指定索引前綴的長度。
BLOB和TEXT欄位不能有預設值。
當排序時只使用該列的前max_sort_length個位元組。 max_sort_length的 預設值是1024。
當你想要讓超過max_sort_length的位元組有意義,對含長值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一種方式是將列值轉換為固定長度的物件。標準方法是使用SUBSTRING函數。
BLOB或TEXT物件的最大大小由其類型決定,但在客戶端和伺服器之間實際可以傳遞的最大值由可用記憶體數量和通訊快取區大小決定。你可以透過更改max_allowed_packet變數的值來更改訊息快取區的大小,但必須同時修改伺服器和客戶端程式。
以上是了解MySQL中TEXT與BLOB欄位類型的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!