文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  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 模式」

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

對於 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 命令列用戶端」