溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySql中Blob與Text的區(qū)別是什么

發(fā)布時間:2021-08-04 17:35:05 來源:億速云 閱讀:157 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)MySql中Blob與Text的區(qū)別是什么,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

BLOB是一個二進(jìn)制大對象,可以容納可變數(shù)量的數(shù)據(jù)。有4種BLOB類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長度不同。

有4種TEXT類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些對應(yīng)4種BLOB類型,有相同的最大長度和存儲需求。

BLOB 列被視為二進(jìn)制字符串(字節(jié)字符串)。TEXT列被視為非二進(jìn)制字符串(字符字符串)。BLOB列沒有字符集,并且排序和比較基于列值字節(jié)的數(shù)值值。TEXT列有一個字符集,并且根據(jù)字符集的 校對規(guī)則對值進(jìn)行排序和比較。

在TEXT或BLOB列的存儲或檢索過程中,不存在大小寫轉(zhuǎn)換。

當(dāng)未運(yùn)行在嚴(yán)格模式時,如果你為BLOB或TEXT列分配一個超過該列類型的最大長度的值值,值被截取以保證適合。如果截掉的字符不是空格,將會產(chǎn)生一條警告。使用嚴(yán)格SQL模式,會產(chǎn)生錯誤,并且值將被拒絕而不是截取并給出警告。

在大多數(shù)方面,可以將BLOB列視為能夠足夠大的VARBINARY列。同樣,可以將TEXT列視為VARCHAR列。BLOB和TEXT在以下幾個方面不同于VARBINARY和VARCHAR:

·         當(dāng)保存或檢索BLOB和TEXT列的值時不刪除尾部空格。(這與VARBINARY和VARCHAR列相同)。

請注意比較時將用空格對TEXT進(jìn)行擴(kuò)充以適合比較的對象,正如CHAR和VARCHAR。

·         對于BLOB和TEXT列的索引,必須指定索引前綴的長度。對于CHAR和VARCHAR,前綴長度是可選的。

·         BLOB和TEXT列不能有 默認(rèn)值。

LONG和LONG VARCHAR對應(yīng)MEDIUMTEXT數(shù)據(jù)類型。這是為了保證兼容性。如果TEXT列類型使用BINARY屬性,將為列分配列字符集的二元 校對規(guī)則。

MySQL連接程序/ODBC將BLOB值定義為LONGVARBINARY,將TEXT值定義為LONGVARCHAR。

由于BLOB和TEXT值可能會非常長,使用它們時可能遇到一些約束:

·         當(dāng)排序時只使用該列的前max_sort_length個字節(jié)。max_sort_length的 默認(rèn)值是1024;該值可以在啟動d服務(wù)器時使用--max_sort_length選項進(jìn)行更改。

運(yùn)行時增加max_sort_length的值可以在排序或組合時使更多的字節(jié)有意義。任何客戶端可以更改其會話max_sort_length變量的值:

mysql> SET max_sort_length = 2000;

mysql> SELECT id, comment FROM tbl_name

    -> ORDER BY comment;

當(dāng)你想要使超過max_sort_length的字節(jié)有意義,對含長值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一種方式是將列值轉(zhuǎn)換為固定長度的對象。標(biāo)準(zhǔn)方法是使用SUBSTRING函數(shù)。例如,下面的語句對comment列的2000個字節(jié)進(jìn)行排序:

mysql> SELECT id, SUBSTRING(comment,1,2000) FROM tbl_name

    -> ORDER BY SUBSTRING(comment,1,2000);

·         BLOB或TEXT對象的最大大小由其類型確定,但在客戶端和服務(wù)器之間實際可以傳遞的最大值由可用內(nèi)存數(shù)量和通信緩存區(qū)大小確定。你可以通過更改max_allowed_packet變量的值更改消息緩存區(qū)的大小,但必須同時修改服務(wù)器和客戶端程序。例如,可以使用mysql和mysqldump來更改客戶端的max_allowed_packet值。

每個BLOB或TEXT值分別由內(nèi)部分配的對象表示。這與其它列類型形成對比,后者是當(dāng)打開表時為每1列分配存儲引擎。

以上就是MySql中Blob與Text的區(qū)別是什么,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI