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ử
1 | Phù hợp với mô hình đơn giản |
2 | Sự phủ định của kết hợp mô hình đơn giản |
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”.
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']]SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
Kết hợp mẫu bằng cách sử dụng mẫu SQL. Trả về
8 [SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
9] hoặcSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
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ếumysql> 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ặcmysql> 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 | +------+------+------+
6 làSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
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.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 | +------+------+------+
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,
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ánhSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
7: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 | +------+------+------+
0b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Đặ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ử
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> 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 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.mysql> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
Với
1, bạn có thể sử dụng hai ký tự ký tự đại diện sau trong mẫu:SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
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ự.mysql> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
1b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Để 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ự
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> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
0 khớp với một ký tự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';
4.mysql> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
2b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Để chỉ định một ký tự thoát khác nhau, hãy sử dụng mệnh đề
5:mysql> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
3b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
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ế độ
7 SQL được bật, chuỗi không thể trống.mysql> SELECT CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
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]:
4b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Là một phần mở rộng cho SQL tiêu chuẩn, MySQL cho phép
1 trên các biểu thức số.SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
5b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Ghi chú
MySQL sử dụng C Escape Cú pháp trong chuỗi [ví dụ:
5 để biểu thị ký tự dòng mới]. Nếu bạn muốn một chuỗimysql> 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';
1 chứa mộtSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
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ếmmysql> 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 CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
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.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 | +------+----------+--------+--------+
Ngoại lệ: Ở cuối chuỗi mẫu, Backslash có thể được chỉ định là
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: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 | +------+----------+--------+--------+
6b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Để 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:
7b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
5 không thíchSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
6 [Escape 'SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
7']]SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
Điều này giống như không [
2 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 | +------+------+------+
6 [Escape 'SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
7']].SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
NOT [
.
2 LIKEmysql> 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 | +------+------+------+
6 [ESCAPE 'SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
7']]SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
Ghi chú
MySQL sử dụng C Escape Cú pháp trong chuỗi [ví dụ:
5 để biểu thị ký tự dòng mới]. Nếu bạn muốn một chuỗimysql> 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';
1 chứa mộtSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
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ếmmysql> 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 CHARSET[b''], LENGTH[b'']; +--------------+-------------+ | CHARSET[b''] | LENGTH[b''] | +--------------+-------------+ | binary | 0 | +--------------+-------------+ mysql> SELECT b''+0; +-------+ | b''+0 | +-------+ | 0 | +-------+
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.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 | +------+----------+--------+--------+
8b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
Ngoại lệ: Ở cuối chuỗi mẫu, Backslash có thể được chỉ định là
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: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 | +------+----------+--------+--------+
NULL NOT LIKE
always returns
2mysql> 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 ofmysql> 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 involvingmysql> 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 usingmysql> 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 | +------+------+------+
01 orb'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
02. In such cases, you must test explicitly forb'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
03 usingb'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
04 [and notb'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]
9b'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
________ 106, ________ 107]
3 trả vềSELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
0 Nếu các chuỗi giống nhau,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 | +------+------+------+
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àb'2' [2 is not a binary digit] 0B01 [0B must be written as 0b]
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ề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 | +------+------+------+
8 nếu không.SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
0mysql> SELECT b'1000001', CHARSET[b'1000001']; +------------+---------------------+ | b'1000001' | CHARSET[b'1000001'] | +------------+---------------------+ | A | binary | +------------+---------------------+ mysql> SELECT 0b1100001, CHARSET[0b1100001]; +-----------+--------------------+ | 0b1100001 | CHARSET[0b1100001] | +-----------+--------------------+ | a | binary | +-----------+--------------------+
3 thực hiện so sánh bằng cách sử dụng đối chiếu các đối số.SELECT _latin1 b'1000001'; SELECT _utf8mb4 0b1000001 COLLATE utf8mb4_danish_ci;
1mysql> SELECT b'1000001', CHARSET[b'1000001']; +------------+---------------------+ | b'1000001' | CHARSET[b'1000001'] | +------------+---------------------+ | A | binary | +------------+---------------------+ mysql> SELECT 0b1100001, CHARSET[0b1100001]; +-----------+--------------------+ | 0b1100001 | CHARSET[0b1100001] | +-----------+--------------------+ | a | binary | +-----------+--------------------+
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.
2mysql> SELECT b'1000001', CHARSET[b'1000001']; +------------+---------------------+ | b'1000001' | CHARSET[b'1000001'] | +------------+---------------------+ | A | binary | +------------+---------------------+ mysql> SELECT 0b1100001, CHARSET[0b1100001]; +-----------+--------------------+ | 0b1100001 | CHARSET[0b1100001] | +-----------+--------------------+ | a | binary | +-----------+--------------------+