Hướng dẫn how to insert varbinary data in mysql - cách chèn dữ liệu varbinary vào mysql

Chỉ là một câu hỏi nhanh ..

Trong số hai tùy chọn được đề cập dưới đây, làm thế nào để lưu trữ vào cột varbinary trong MySQL?

public_key = '67498930589635764678356756719'

hoặc

public_key = 67498930589635764678356756719

Phương pháp thứ hai sẽ hoạt động? Tôi đang tham gia một thời điểm khẩn cấp làm việc trên một máy chủ sản xuất và không muốn thử nghiệm nó.

Cảm ơn bạn cho bất kỳ sự giúp đỡ.

hỏi ngày 2 tháng 2 năm 2010 lúc 9:10Feb 2, 2010 at 9:10

Hướng dẫn how to insert varbinary data in mysql - cách chèn dữ liệu varbinary vào mysql

Dữ liệu có thể in có thể được chèn bằng báo giá. Dữ liệu không thể in có thể được chèn bằng các giá trị thập lục phân. I E.:

INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data

Đã trả lời ngày 2 tháng 2 năm 2010 lúc 9:19Feb 2, 2010 at 9:19

Håvard Shåvard sHåvard S

22.6K6 Huy hiệu vàng59 Huy hiệu bạc71 Huy hiệu đồng6 gold badges59 silver badges71 bronze badges

0

11.3.3 & nbsp; các loại nhị phân và varbinary

Các loại BINARYVARBINARY tương tự như CHARVARCHAR, ngoại trừ việc chúng lưu trữ các chuỗi nhị phân thay vì các chuỗi không phải là chuỗi. Đó là, họ lưu trữ các chuỗi byte chứ không phải chuỗi nhân vật. Điều này có nghĩa là chúng có tập hợp và đối chiếu ký tự binary, và so sánh và sắp xếp dựa trên các giá trị số của các byte trong các giá trị.

Độ dài tối đa cho phép là giống nhau đối với BINARYVARBINARY như đối với CHARVARCHAR, ngoại trừ độ dài cho BINARYVARBINARY được đo bằng byte thay vì ký tự.

Các loại dữ liệu BINARYVARBINARY khác biệt với các loại dữ liệu

public_key = 67498930589635764678356756719
8 và
public_key = 67498930589635764678356756719
9. Đối với các loại sau, thuộc tính BINARY không khiến cột được coi là cột chuỗi nhị phân. Thay vào đó, nó gây ra đối chiếu nhị phân (
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
1) cho bộ ký tự cột (hoặc bộ ký tự mặc định bảng nếu không có bộ ký tự cột nào được chỉ định) và chính cột lưu trữ các chuỗi ký tự không phải là chuỗi byte nhị phân. Ví dụ: nếu bộ ký tự mặc định là
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
2,
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
3 được coi là
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
4. Điều này khác với
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
5, lưu trữ các chuỗi nhị phân 5 byte có bộ và đối chiếu ký tự ____99. Để biết thông tin về sự khác biệt giữa đối chiếu binary của bộ ký tự binary và các đối chiếu
INSERT INTO Table(VarBinaryColumn) VALUES('Printable data') -- Will be stored as binary representation using the charset of the operating system

INSERT INTO Table(VarBinaryColumn) VALUES(0x12345) -- Non-printable binary data
1 của các bộ ký tự không phải là bộ, xem Phần & NBSP; 10.8.5, đối chiếu nhị phân so với các đối chiếu _BIN.

Nếu chế độ SQL nghiêm ngặt không được bật và bạn gán giá trị cho cột BINARY hoặc VARBINARY 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 các trường hợp cắt ngắn, để gây ra lỗi xảy ra (thay vì cảnh báo) và triệt tiêu chèn giá trị, hãy sử dụng chế độ SQL nghiêm ngặt. Xem Phần & NBSP; 5.1.11, Chế độ SQL Server SQL.

Khi các giá trị BINARY được lưu trữ, chúng được gắn bên phải với giá trị PAD theo độ dài được chỉ định. Giá trị pad là

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 (số không). Các giá trị được gắn bên phải với
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 để chèn và không có byte dấu vết nào được gỡ bỏ để truy xuất. Tất cả các byte đều có ý nghĩa trong so sánh, bao gồm các hoạt động
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
5 và
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
6.
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 và không gian khác nhau trong so sánh, với
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 sắp xếp trước không gian.

Ví dụ: Đối với cột

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
9, varbinary0 trở thành varbinary1 khi được chèn. varbinary2 trở thành varbinary3 khi chèn. Cả hai giá trị được chèn vẫn không thay đổi để truy xuất.

Đối với VARBINARY, không có phần đệm để chèn và không có byte bị tước để truy xuất. Tất cả các byte đều có ý nghĩa trong so sánh, bao gồm các hoạt động

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
5 và
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
6.
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 và không gian khác nhau trong so sánh, với
mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)
3 sắp xếp trước không gian.

Đối với những trường hợp có các byte byte kéo theo hoặc so sánh bỏ qua chúng, nếu một cột có một chỉ mục yêu cầu các giá trị duy nhất, chèn các giá trị vào cột chỉ khác nhau về số lượng byte byte kéo dài dẫn đến lỗi khóa trùng lặp. Ví dụ: nếu một bảng chứa varbinary9, một nỗ lực lưu trữ varbinary2 gây ra lỗi khóa trùng lặp.

Bạn nên xem xét các đặc điểm đệm và tước trước đó một cách cẩn thận nếu bạn có kế hoạch sử dụng kiểu dữ liệu BINARY để lưu trữ dữ liệu nhị phân và bạn yêu cầu giá trị được lấy chính xác giống như giá trị được lưu trữ. Ví dụ sau đây minh họa cách ____ 33 padding của BINARY giá trị ảnh hưởng đến so sánh giá trị cột:

mysql> CREATE TABLE t (c BINARY(3));
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO t SET c = 'a';
Query OK, 1 row affected (0.01 sec)

mysql> SELECT HEX(c), c = 'a', c = 'a\0\0' from t;
+--------+---------+-------------+
| HEX(c) | c = 'a' | c = 'a\0\0' |
+--------+---------+-------------+
| 610000 |       0 |           1 |
+--------+---------+-------------+
1 row in set (0.09 sec)

Nếu giá trị được truy xuất phải giống như giá trị được chỉ định để lưu trữ không có đệm, có thể tốt hơn là sử dụng VARBINARY hoặc một trong các loại dữ liệu BINARY5 thay thế.

Varbinary trong MySQL là gì?

Các loại nhị phân và varbinary tương tự như char và varchar, ngoại trừ việc chúng lưu trữ các chuỗi nhị phân chứ không phải là chuỗi không phải là chuỗi.Đó là, họ lưu trữ các chuỗi byte chứ không phải chuỗi nhân vật.similar to CHAR and VARCHAR , except that they store binary strings rather than nonbinary strings. That is, they store byte strings rather than character strings.

Varbinary Max trong MySQL là gì?

varbinary [(n | max)] n có thể là giá trị từ 1 đến 8.000.Max chỉ ra rằng kích thước lưu trữ tối đa là 2^31-1 byte.2^31-1 bytes.

Loại Blob trong MySQL là gì?

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 blob là Tinyblob, Blob, Mediumblob và Longblob.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 văn bản là Tinytext, Text, Mediumtext và Longtext.TINYBLOB , BLOB , MEDIUMBLOB , and LONGBLOB . These differ only in the maximum length of the values they can hold. The four TEXT types are TINYTEXT , TEXT , MEDIUMTEXT , and LONGTEXT .

Varbinary có phải là Blob không?

Sự khác biệt chính giữa varbinary và blob là: varbinary phải có đặc tả độ dài, blob không được (nhưng có thể);Chỉ số bằng blob phải có đặc tả độ dài tiền tố, varbinary không được (nhưng có thể);Varbinary có thể có giá trị mặc định, Blob không thể.VARBINARY must have length specification, BLOB must not (but may); Index by BLOB must have prefix length specification, VARBINARY must not (but may); VARBINARY may have default value, BLOB cannot.