Hướng dẫn mysql blob to string - mysql blob thành chuỗi

11.3.4 & nbsp; các loại Blob và văn bản

Một BLOB là một đối tượng lớn nhị phân có thể chứa một lượng dữ liệu khác nhau. Bốn loại BLOBTINYBLOB, BLOB, MEDIUMBLOBLONGBLOB. Chúng chỉ khác nhau về độ dài tối đa của các giá trị mà chúng có thể giữ. Bốn loại TEXTTINYTEXT, TEXT, BLOB0 và BLOB1. Chúng tương ứng với bốn loại BLOB và có cùng độ dài tối đa và yêu cầu lưu trữ. Xem Phần & NBSP; 11.7, Yêu cầu lưu trữ kiểu dữ liệu.

Các giá trị BLOB được coi là chuỗi nhị phân (chuỗi byte). Chúng có bộ và đối chiếu ký tự BLOB4, và so sánh và sắp xếp dựa trên các giá trị số của byte trong các giá trị cột. Các giá trị TEXT được coi là chuỗi không phải là chuỗi (chuỗi ký tự). Chúng có một bộ ký tự khác với BLOB4 và các giá trị được sắp xếp và so sánh dựa trên sự đối chiếu của bộ ký tự.

Nếu chế độ SQL nghiêm ngặt không được bật và bạn gán giá trị cho cột BLOB hoặc TEXT vượt quá độ dài tối đa của cột, giá trị bị cắt ngắn để phù hợp và cảnh báo được tạo ra. Đối với việc cắt ngắn các ký tự không gian không gian, bạn có thể gây ra lỗi xảy ra (thay vì cảnh báo) và triệt tiêu chèn giá trị bằng cách sử dụng chế độ SQL nghiêm ngặt. Xem Phần & NBSP; 5.1.11, Chế độ SQL Server SQL.

Cắt ngắn các khoảng trống vượt quá từ các giá trị được chèn vào các cột TEXT luôn tạo ra một cảnh báo, bất kể chế độ SQL.

Đối với các cột TEXTBLOB, không có phần đệm trên chèn và không có byte nào bị tước bỏ chọn.

Nếu cột TEXT được lập chỉ mục, so sánh mục nhập chỉ mục được gắn không gian ở cuối. Điều này có nghĩa là, nếu chỉ mục yêu cầu các giá trị duy nhất, các lỗi khóa trùng lặp xảy ra đối với các giá trị chỉ khác nhau về số lượng không gian dấu vết. Ví dụ: nếu một bảng chứa BLOB3, một nỗ lực lưu trữ BLOB4 gây ra lỗi khóa trùng lặp. Điều này không đúng với các cột BLOB.

Trong hầu hết các khía cạnh, bạn có thể coi cột BLOB là cột BLOB7 có thể lớn như bạn muốn. Tương tự, bạn có thể coi cột TEXT là cột BLOB9. BLOBTEXT khác với BLOB7 và BLOB9 theo các cách sau:

  • Đối với các chỉ mục trên các cột BLOBTEXT, bạn phải chỉ định độ dài tiền tố chỉ mục. Đối với TINYBLOB6 và BLOB9, độ dài tiền tố là tùy chọn. Xem Phần & NBSP; 8.3.5, Chỉ mục cột của người dùng.

  • Các cột BLOBTEXT không thể có các giá trị BLOB0.

Nếu bạn sử dụng thuộc tính BLOB1 với kiểu dữ liệu TEXT, cột được gán đối chiếu nhị phân (BLOB3) của bộ ký tự cột.

BLOB4 và BLOB5 Bản đồ cho kiểu dữ liệu BLOB0. Đây là một tính năng tương thích.

Trình kết nối MySQL/ODBC định nghĩa các giá trị BLOB là các giá trị BLOB8 và TEXTMEDIUMBLOB0.

Bởi vì các giá trị BLOBTEXT có thể cực kỳ dài, bạn có thể gặp phải một số ràng buộc khi sử dụng chúng:

  • Chỉ các byte MEDIUMBLOB3 đầu tiên của cột được sử dụng khi sắp xếp. Giá trị mặc định của MEDIUMBLOB3 là 1024. Bạn có thể tạo ra nhiều byte hơn trong việc sắp xếp hoặc nhóm bằng cách tăng giá trị của MEDIUMBLOB3 khi khởi động máy chủ hoặc thời gian chạy. Bất kỳ máy khách nào cũng có thể thay đổi giá trị của biến MEDIUMBLOB3 của nó:

    mysql> SET max_sort_length = 2000;
    mysql> SELECT id, comment FROM t
        -> ORDER BY comment;
  • Các phiên bản của các cột BLOB hoặc TEXT do kết quả truy vấn được xử lý bằng cách sử dụng bảng tạm thời khiến máy chủ sử dụng bảng trên đĩa thay vì trong bộ nhớ vì công cụ lưu trữ MEDIUMBLOB9 không hỗ trợ các loại dữ liệu đó (xem Phần & NBSP; 8.4.4 , Sử dụng bảng tạm thời nội bộ trong MySQL,). Việc sử dụng đĩa bị phạt hiệu suất, do đó, bao gồm các cột BLOB hoặc TEXT trong kết quả truy vấn chỉ khi chúng thực sự cần thiết. Ví dụ: tránh sử dụng LONGBLOB2, chọn tất cả các cột.

  • Kích thước tối đa của đối tượng BLOB hoặc TEXT được xác định bởi loại của nó, nhưng giá trị lớn nhất mà bạn thực sự có thể truyền giữa máy khách và máy chủ được xác định bởi lượng bộ nhớ có sẵn và kích thước của bộ đệm liên lạc. Bạn có thể thay đổi kích thước bộ đệm thông báo bằng cách thay đổi giá trị của biến LONGBLOB5, nhưng bạn phải làm như vậy cho cả máy chủ và chương trình khách hàng của bạn. Ví dụ: cả MySQL và MySQLDump đều cho phép bạn thay đổi giá trị LONGBLOB5 phía máy khách. Xem Phần & NBSP; 5.1.1, Định cấu hình máy chủ, Phần & NBSP; 4.5.1, MYSQL-Máy khách dòng lệnh MySQL và Phần & NBSP; 4.5.4, MySQLDUMP-một chương trình sao lưu cơ sở dữ liệu. Bạn cũng có thể muốn so sánh kích thước gói và kích thước của các đối tượng dữ liệu bạn đang lưu trữ với các yêu cầu lưu trữ, xem Phần & NBSP; 11.7, Yêu cầu lưu trữ kiểu dữ liệu của Hồimysql and mysqldump enable you to change the client-side LONGBLOB5 value. See Section 5.1.1, “Configuring the Server”, Section 4.5.1, “mysql — The MySQL Command-Line Client”, and Section 4.5.4, “mysqldump — A Database Backup Program”. You may also want to compare the packet sizes and the size of the data objects you are storing with the storage requirements, see Section 11.7, “Data Type Storage Requirements”

Mỗi giá trị BLOB hoặc TEXT được biểu thị bên trong bằng một đối tượng được phân bổ riêng.Điều này trái ngược với tất cả các loại dữ liệu khác, trong đó lưu trữ được phân bổ một lần trên mỗi cột khi bảng được mở.

Trong một số trường hợp, có thể mong muốn lưu trữ dữ liệu nhị phân như các tệp phương tiện trong các cột BLOB hoặc TEXT.Bạn có thể thấy các chức năng xử lý chuỗi của MySQL hữu ích để làm việc với dữ liệu đó.Xem Phần & NBSP; 12.8, Chức năng Chuỗi và toán tử.Đối với bảo mật và các lý do khác, thường nên sử dụng mã ứng dụng thay vì cung cấp cho người dùng ứng dụng đặc quyền TEXT1.Bạn có thể thảo luận về các chi tiết cụ thể cho các ngôn ngữ và nền tảng khác nhau trong các diễn đàn MySQL (http://forums.mysql.com/).