文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  BLOB 和 TEXT 類型

13.3.4 BLOB 和 TEXT 類型

BLOB 是一種二進位大型物件,可以容納可變數量的資料。四種 BLOB 類型為 TINYBLOBBLOBMEDIUMBLOBLONGBLOB。它們的區別僅在於它們可以容納的值的最大長度。四種 TEXT 類型為 TINYTEXTTEXTMEDIUMTEXTLONGTEXT。它們對應於四種 BLOB 類型,並具有相同的最大長度和儲存需求。請參閱 第 13.7 節「資料類型儲存需求」

BLOB 值被視為二進位字串(位元組字串)。它們具有 binary 字元集和校對,並且比較和排序基於欄位值中位元組的數值。TEXT 值被視為非二進位字串(字元字串)。它們具有 binary 以外的字元集,並且值的排序和比較基於字元集的校對。

如果未啟用嚴格 SQL 模式,並且您將超出欄位最大長度的值指派給 BLOBTEXT 欄位,則該值會被截斷以符合欄位長度,並產生警告。對於非空白字元的截斷,您可以使用嚴格 SQL 模式來導致發生錯誤(而不是警告)並抑制值的插入。請參閱 第 7.1.11 節「伺服器 SQL 模式」

無論 SQL 模式為何,從要插入 TEXT 欄位的值中截斷多餘的尾隨空格始終會產生警告。

對於 TEXTBLOB 欄位,插入時沒有填補,選取時也不會剝離位元組。

如果為 TEXT 欄位建立索引,則索引條目比較會在結尾處以空格填補。這表示,如果索引需要唯一值,則僅在尾隨空格數量上不同的值會發生重複鍵錯誤。例如,如果表格包含 'a',則嘗試儲存 'a ' 會導致重複鍵錯誤。對於 BLOB 欄位則不是如此。

在大多數方面,您可以將 BLOB 欄位視為您想要大小的 VARBINARY 欄位。同樣地,您可以將 TEXT 欄位視為 VARCHAR 欄位。BLOBTEXT 在以下方面與 VARBINARYVARCHAR 不同

  • 對於 BLOBTEXT 欄位上的索引,您必須指定索引前置長度。對於 CHARVARCHAR,前置長度是可選的。請參閱 第 10.3.5 節「欄位索引」

  • BLOBTEXT 欄位不能具有 DEFAULT 值。

如果您將 BINARY 屬性與 TEXT 資料類型搭配使用,則欄位會被指派欄位字元集的二進位 (_bin) 校對。

LONGLONG VARCHAR 對應到 MEDIUMTEXT 資料類型。這是一個相容性功能。

MySQL Connector/ODBC 將 BLOB 值定義為 LONGVARBINARY,將 TEXT 值定義為 LONGVARCHAR

因為 BLOBTEXT 值可能非常長,因此您在使用它們時可能會遇到一些限制

每個 BLOBTEXT 值在內部都由單獨配置的物件表示。這與所有其他資料類型相反,其他資料類型的儲存空間在表格開啟時每個欄位配置一次。

在某些情況下,可能需要將二進制資料(例如媒體檔案)儲存在 BLOBTEXT 資料行中。您可能會發現 MySQL 的字串處理函數對於處理這類資料很有用。請參閱第 14.8 節「字串函數和運算子」。為了安全和其他原因,通常最好使用應用程式碼來執行此操作,而不是授予應用程式使用者 FILE 權限。您可以在 MySQL 論壇 (http://forums.mysql.com/) 中討論各種語言和平台的具體細節。

注意

mysql 用戶端中,二進制字串會以十六進制表示法顯示,具體取決於 --binary-as-hex 的值。有關該選項的更多資訊,請參閱第 6.5.1 節「mysql — MySQL 命令列用戶端」