Hướng dẫn mysql binary literal - ký tự nhị phân mysql

9.1.5 & nbsp; nghĩa đen giá trị bit

Bit-giá trị chữ được viết bằng cách sử dụng ký hiệu

mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
3 'hoặc
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
4.
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
5 là một giá trị nhị phân được viết bằng số không và các giá trị. Lettercase của bất kỳ
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
6 hàng đầu không quan trọng. Một
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
7 hàng đầu là nhạy cảm trường hợp và không thể được viết là
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
8.

Bit-giá trị hợp pháp theo nghĩa đen:

b'01'
B'01'
0b01

Bit-giá trị bất hợp pháp theo nghĩa đen:

b'2'    (2 is not a binary digit)
0B01    (0B must be written as 0b)

Theo mặc định, nghĩa đen giá trị bit là chuỗi nhị phân:

mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+

Một nghĩa đen giá trị bit có thể có một bộ giới thiệu ký tự tùy chọn và mệnh đề

mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
9, để chỉ định nó là một chuỗi sử dụng một bộ ký tự và đối chiếu cụ thể:

[_charset_name] b'val' [COLLATE collation_name]

Ví dụ:

SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;

Các ví dụ sử dụng ký hiệu

mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
3 ', nhưng ký hiệu
mysql> SELECT b'1000001', CHARSET(b'1000001');
+------------+---------------------+
| b'1000001' | CHARSET(b'1000001') |
+------------+---------------------+
| A          | binary              |
+------------+---------------------+
mysql> SELECT 0b1100001, CHARSET(0b1100001);
+-----------+--------------------+
| 0b1100001 | CHARSET(0b1100001) |
+-----------+--------------------+
| a         | binary             |
+-----------+--------------------+
4 cũng cho phép người giới thiệu. Để biết thông tin về người giới thiệu, xem Phần & NBSP; 10.3.8, Bộ giới thiệu nhân vật.

Trong bối cảnh số, MySQL đối xử với một chút theo nghĩa đen như một số nguyên. Để đảm bảo xử lý số của một chút theo nghĩa đen, hãy sử dụng nó trong bối cảnh số. Các cách để làm điều này bao gồm thêm 0 hoặc sử dụng

[_charset_name] b'val' [COLLATE collation_name]
2. Ví dụ: một chút theo nghĩa đen được gán cho một biến do người dùng xác định là một chuỗi nhị phân theo mặc định. Để gán giá trị làm số, hãy sử dụng nó trong bối cảnh số:

mysql> SET @v1 = b'1100001';
mysql> SET @v2 = b'1100001'+0;
mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
mysql> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| a    |   97 |   97 |
+------+------+------+

Một giá trị bit trống (

[_charset_name] b'val' [COLLATE collation_name]
3) đánh giá thành chuỗi nhị phân có độ dài bằng không. Được chuyển đổi thành một số, nó tạo ra 0:

mysql> SELECT CHARSET(b''), LENGTH(b'');
+--------------+-------------+
| CHARSET(b'') | LENGTH(b'') |
+--------------+-------------+
| binary       |           0 |
+--------------+-------------+
mysql> SELECT b''+0;
+-------+
| b''+0 |
+-------+
|     0 |
+-------+

Ký hiệu giá trị bit thuận tiện để chỉ định các giá trị được gán cho các cột

[_charset_name] b'val' [COLLATE collation_name]
4:

mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';
mysql> INSERT INTO t SET b = b'1010';
mysql> INSERT INTO t SET b = b'0101';

Các giá trị bit trong các bộ kết quả được trả về dưới dạng giá trị nhị phân, có thể không hiển thị tốt. Để chuyển đổi một giá trị bit thành biểu mẫu có thể in, hãy sử dụng nó trong bối cảnh số hoặc sử dụng hàm chuyển đổi như

[_charset_name] b'val' [COLLATE collation_name]
5 hoặc
[_charset_name] b'val' [COLLATE collation_name]
6. Các chữ số 0 bậc cao không được hiển thị trong giá trị được chuyển đổi.

________số 8

Đối với các chữ cái bit, các hoạt động bit được coi là ngữ cảnh số, nhưng các hoạt động bit cho phép các đối số chuỗi nhị phân hoặc nhị phân trong MySQL 8.0 trở lên. Để chỉ định rõ ràng bối cảnh chuỗi nhị phân cho các chữ cái bit, hãy sử dụng trình giới thiệu

[_charset_name] b'val' [COLLATE collation_name]
7 cho ít nhất một trong các đối số:

mysql> SET @v1 = b'000010101' | b'000101010';
mysql> SET @v2 = _binary b'000010101' | _binary b'000101010';
mysql> SELECT HEX(@v1), HEX(@v2);
+----------+----------+
| HEX(@v1) | HEX(@v2) |
+----------+----------+
| 3F       | 003F     |
+----------+----------+

Kết quả được hiển thị xuất hiện tương tự cho cả hai hoạt động bit, nhưng kết quả không có

[_charset_name] b'val' [COLLATE collation_name]
7 là giá trị
[_charset_name] b'val' [COLLATE collation_name]
9, trong khi kết quả với
[_charset_name] b'val' [COLLATE collation_name]
7 là chuỗi nhị phân. Do sự khác biệt về các loại kết quả, các giá trị được hiển thị khác nhau: 0 chữ số 0 không được hiển thị cho kết quả số.

12.8.1 & NBSP; Chức năng so sánh chuỗi và toán tử

Bảng & NBSP; 12.13 & NBSP; Chức năng so sánh chuỗi và toán tử

TênSự mô tả
SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
1
Phù hợp với mô hình đơn giản
SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
2
Sự phủ định của kết hợp mô hình đơn giản
SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
3
So sánh hai chuỗi

Nếu một hàm chuỗi được cung cấp một chuỗi nhị phân như một đối số, chuỗi kết quả cũng là một chuỗi nhị phân. Một số được chuyển đổi thành một chuỗi được coi là một chuỗi nhị phân. Điều này chỉ ảnh hưởng đến so sánh.

Thông thường, nếu bất kỳ biểu thức nào trong so sánh chuỗi là nhạy cảm trường hợp, thì so sánh được thực hiện theo kiểu nhạy cảm trường hợp.

Nếu một hàm chuỗi được gọi từ bên trong máy khách MySQL, hiển thị chuỗi nhị phân bằng cách sử dụng ký hiệu thập lục phân, tùy thuộc vào giá trị của

SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
4. Để biết thêm thông tin về tùy chọn đó, hãy xem Phần & NBSP; 4.5.1, MYSQL-Máy khách dòng lệnh MySQL.mysql client, binary strings display using hexadecimal notation, depending on the value of the
SELECT _latin1 b'1000001';
SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
4. For more information about that option, see Section 4.5.1, “mysql — The MySQL Command-Line Client”.

  • SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    5 như
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    6 [Escape '
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    7']]

    Kết hợp mẫu bằng cách sử dụng mẫu SQL. Trả về

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    8 (
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    9) hoặc
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    0 (
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    1). Nếu
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    2 hoặc
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    6 là
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4, kết quả là
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4.

    Các mẫu không cần phải là một chuỗi theo nghĩa đen. Ví dụ: nó có thể được chỉ định là một biểu thức chuỗi hoặc cột bảng. Trong trường hợp sau, cột phải được định nghĩa là một trong các loại chuỗi MySQL (xem Phần & NBSP; 11.3, các loại dữ liệu chuỗi chuỗi).

    Theo tiêu chuẩn SQL,

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    1 thực hiện khớp trên cơ sở peracter, do đó nó có thể tạo ra kết quả khác với toán tử so sánh
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    7:

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    0

    Đặc biệt, không gian theo dõi luôn luôn có ý nghĩa. Điều này khác với các so sánh được thực hiện với toán tử

    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    7, trong đó tầm quan trọng của các không gian dấu vết trong các chuỗi không phải là (
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    9,
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    0 và
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    1) phụ thuộc vào thuộc tính PAD của đối chiếu được sử dụng để so sánh. Để biết thêm thông tin, xem xử lý không gian theo dõi trong so sánh.

    Với

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    1, bạn có thể sử dụng hai ký tự ký tự đại diện sau trong mẫu:

    • mysql> SELECT CHARSET(b''), LENGTH(b'');
      +--------------+-------------+
      | CHARSET(b'') | LENGTH(b'') |
      +--------------+-------------+
      | binary       |           0 |
      +--------------+-------------+
      mysql> SELECT b''+0;
      +-------+
      | b''+0 |
      +-------+
      |     0 |
      +-------+
      3 khớp với bất kỳ số lượng ký tự nào, thậm chí không có ký tự.

    • mysql> SELECT CHARSET(b''), LENGTH(b'');
      +--------------+-------------+
      | CHARSET(b'') | LENGTH(b'') |
      +--------------+-------------+
      | binary       |           0 |
      +--------------+-------------+
      mysql> SELECT b''+0;
      +-------+
      | b''+0 |
      +-------+
      |     0 |
      +-------+
      4 khớp với chính xác một ký tự.

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    1

    Để kiểm tra các trường hợp theo nghĩa đen của một nhân vật ký tự đại diện, đi trước nó bởi nhân vật thoát hiểm. Nếu bạn không chỉ định ký tự

    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    5,
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    6 sẽ được giả định, trừ khi chế độ
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    7 SQL được bật. Trong trường hợp đó, không có ký tự thoát nào được sử dụng.

    • mysql> SELECT CHARSET(b''), LENGTH(b'');
      +--------------+-------------+
      | CHARSET(b'') | LENGTH(b'') |
      +--------------+-------------+
      | binary       |           0 |
      +--------------+-------------+
      mysql> SELECT b''+0;
      +-------+
      | b''+0 |
      +-------+
      |     0 |
      +-------+
      8 khớp với một ký tự
      mysql> SELECT CHARSET(b''), LENGTH(b'');
      +--------------+-------------+
      | CHARSET(b'') | LENGTH(b'') |
      +--------------+-------------+
      | binary       |           0 |
      +--------------+-------------+
      mysql> SELECT b''+0;
      +-------+
      | b''+0 |
      +-------+
      |     0 |
      +-------+
      3.

    • mysql> CREATE TABLE t (b BIT(8));
      mysql> INSERT INTO t SET b = b'11111111';
      mysql> INSERT INTO t SET b = b'1010';
      mysql> INSERT INTO t SET b = b'0101';
      0 khớp với một ký tự
      mysql> SELECT CHARSET(b''), LENGTH(b'');
      +--------------+-------------+
      | CHARSET(b'') | LENGTH(b'') |
      +--------------+-------------+
      | binary       |           0 |
      +--------------+-------------+
      mysql> SELECT b''+0;
      +-------+
      | b''+0 |
      +-------+
      |     0 |
      +-------+
      4.

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    2

    Để chỉ định một ký tự thoát khác nhau, hãy sử dụng mệnh đề

    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    5:

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    3

    Trình tự thoát nên là một ký tự dài để chỉ định ký tự thoát hoặc trống để chỉ định rằng không có ký tự thoát nào được sử dụng. Biểu thức phải đánh giá như một hằng số tại thời điểm thực hiện. Nếu chế độ

    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    7 SQL được bật, chuỗi không thể trống.

    Hai câu sau đây minh họa rằng các so sánh chuỗi không nhạy cảm với trường hợp trừ khi một trong các toán hạng nhạy cảm trường hợp (sử dụng đối chiếu nhạy cảm trường hợp hoặc là chuỗi nhị phân):

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    4

    Là một phần mở rộng cho SQL tiêu chuẩn, MySQL cho phép

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    1 trên các biểu thức số.

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    5

    Ghi chú

    MySQL sử dụng C Escape Cú pháp trong chuỗi (ví dụ:

    mysql> CREATE TABLE t (b BIT(8));
    mysql> INSERT INTO t SET b = b'11111111';
    mysql> INSERT INTO t SET b = b'1010';
    mysql> INSERT INTO t SET b = b'0101';
    5 để biểu thị ký tự dòng mới). Nếu bạn muốn một chuỗi
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    1 chứa một
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    6 theo nghĩa đen, bạn phải nhân đôi nó. (Trừ khi chế độ
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    7 SQL được bật, trong trường hợp đó không sử dụng ký tự thoát.) Để tìm kiếm
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    6, chỉ định nó là
    mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
    +------+----------+--------+--------+
    | b+0  | BIN(b)   | OCT(b) | HEX(b) |
    +------+----------+--------+--------+
    |  255 | 11111111 | 377    | FF     |
    |   10 | 1010     | 12     | A      |
    |    5 | 101      | 5      | 5      |
    +------+----------+--------+--------+
    2; Điều này là do các dấu gạch chéo ngược bị loại bỏ một lần bởi trình phân tích cú pháp và một lần nữa khi kết quả phù hợp với mẫu, để lại một dấu gạch chéo ngược để được khớp với.

    Ngoại lệ: Ở cuối chuỗi mẫu, Backslash có thể được chỉ định là

    mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
    +------+----------+--------+--------+
    | b+0  | BIN(b)   | OCT(b) | HEX(b) |
    +------+----------+--------+--------+
    |  255 | 11111111 | 377    | FF     |
    |   10 | 1010     | 12     | A      |
    |    5 | 101      | 5      | 5      |
    +------+----------+--------+--------+
    3. Ở cuối chuỗi, Backslash là tự đứng vì không có gì theo sau để trốn thoát. Giả sử rằng một bảng chứa các giá trị sau:

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    6

    Để kiểm tra các giá trị kết thúc bằng dấu gạch chéo ngược, bạn có thể khớp các giá trị bằng một trong các mẫu sau:

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    7

  • SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    5 không thích
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    6 [Escape '
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    7']]

    Điều này giống như không (

    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    2 như
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    6 [Escape '
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    7']).NOT (
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    2 LIKE
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    6 [ESCAPE '
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    7'])
    .

    Ghi chú

    MySQL sử dụng C Escape Cú pháp trong chuỗi (ví dụ:

    mysql> CREATE TABLE t (b BIT(8));
    mysql> INSERT INTO t SET b = b'11111111';
    mysql> INSERT INTO t SET b = b'1010';
    mysql> INSERT INTO t SET b = b'0101';
    5 để biểu thị ký tự dòng mới). Nếu bạn muốn một chuỗi
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    1 chứa một
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    6 theo nghĩa đen, bạn phải nhân đôi nó. (Trừ khi chế độ
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    7 SQL được bật, trong trường hợp đó không sử dụng ký tự thoát.) Để tìm kiếm
    mysql> SELECT CHARSET(b''), LENGTH(b'');
    +--------------+-------------+
    | CHARSET(b'') | LENGTH(b'') |
    +--------------+-------------+
    | binary       |           0 |
    +--------------+-------------+
    mysql> SELECT b''+0;
    +-------+
    | b''+0 |
    +-------+
    |     0 |
    +-------+
    6, chỉ định nó là
    mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
    +------+----------+--------+--------+
    | b+0  | BIN(b)   | OCT(b) | HEX(b) |
    +------+----------+--------+--------+
    |  255 | 11111111 | 377    | FF     |
    |   10 | 1010     | 12     | A      |
    |    5 | 101      | 5      | 5      |
    +------+----------+--------+--------+
    2; Điều này là do các dấu gạch chéo ngược bị loại bỏ một lần bởi trình phân tích cú pháp và một lần nữa khi kết quả phù hợp với mẫu, để lại một dấu gạch chéo ngược để được khớp với.

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    8

    Ngoại lệ: Ở cuối chuỗi mẫu, Backslash có thể được chỉ định là

    mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
    +------+----------+--------+--------+
    | b+0  | BIN(b)   | OCT(b) | HEX(b) |
    +------+----------+--------+--------+
    |  255 | 11111111 | 377    | FF     |
    |   10 | 1010     | 12     | A      |
    |    5 | 101      | 5      | 5      |
    +------+----------+--------+--------+
    3. Ở cuối chuỗi, Backslash là tự đứng vì không có gì theo sau để trốn thoát. Giả sử rằng một bảng chứa các giá trị sau:NULL NOT LIKE
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    2
    always returns
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4, regardless of the value of
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    2. The same is true for aggregate queries involving
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4 and comparisons using
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    01 or
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    02. In such cases, you must test explicitly for
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    03 using
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    04 (and not
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    05), as shown here:

    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    9

  • ________ 106, ________ 107)

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    3 trả về
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    0 Nếu các chuỗi giống nhau,
    b'2'    (2 is not a binary digit)
    0B01    (0B must be written as 0b)
    10 nếu đối số đầu tiên nhỏ hơn so với thứ hai theo thứ tự sắp xếp hiện tại và
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4 nếu một trong hai đối số là
    mysql> SET @v1 = b'1100001';
    mysql> SET @v2 = b'1100001'+0;
    mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
    mysql> SELECT @v1, @v2, @v3;
    +------+------+------+
    | @v1  | @v2  | @v3  |
    +------+------+------+
    | a    |   97 |   97 |
    +------+------+------+
    4.Nó trả về
    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    8 nếu không.

    mysql> SELECT b'1000001', CHARSET(b'1000001');
    +------------+---------------------+
    | b'1000001' | CHARSET(b'1000001') |
    +------------+---------------------+
    | A          | binary              |
    +------------+---------------------+
    mysql> SELECT 0b1100001, CHARSET(0b1100001);
    +-----------+--------------------+
    | 0b1100001 | CHARSET(0b1100001) |
    +-----------+--------------------+
    | a         | binary             |
    +-----------+--------------------+
    0

    SELECT _latin1 b'1000001';
    SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
    3 thực hiện so sánh bằng cách sử dụng đối chiếu các đối số.

    mysql> SELECT b'1000001', CHARSET(b'1000001');
    +------------+---------------------+
    | b'1000001' | CHARSET(b'1000001') |
    +------------+---------------------+
    | A          | binary              |
    +------------+---------------------+
    mysql> SELECT 0b1100001, CHARSET(0b1100001);
    +-----------+--------------------+
    | 0b1100001 | CHARSET(0b1100001) |
    +-----------+--------------------+
    | a         | binary             |
    +-----------+--------------------+
    1

    Nếu các đối chiếu không tương thích, một trong những đối số phải được chuyển đổi để tương thích với các đối số khác.Xem phần & nbsp; 10.8.4, sự ép buộc đối chiếu trong các biểu thức.

    mysql> SELECT b'1000001', CHARSET(b'1000001');
    +------------+---------------------+
    | b'1000001' | CHARSET(b'1000001') |
    +------------+---------------------+
    | A          | binary              |
    +------------+---------------------+
    mysql> SELECT 0b1100001, CHARSET(0b1100001);
    +-----------+--------------------+
    | 0b1100001 | CHARSET(0b1100001) |
    +-----------+--------------------+
    | a         | binary             |
    +-----------+--------------------+
    2