Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách hàm WEIGHT_STRING () hoạt động trong MySQL

Trong MySQL, WEIGHT_STRING() hàm trả về chuỗi trọng số cho chuỗi đầu vào. Giá trị trả về là một chuỗi nhị phân đại diện cho giá trị so sánh và sắp xếp của chuỗi.

Nếu chuỗi đầu vào là một giá trị không nhị phân, giá trị trả về chứa các trọng số đối chiếu cho chuỗi. Nếu đó là giá trị nhị phân, kết quả sẽ giống với chuỗi đầu vào. Điều này là do trọng số của mỗi byte trong chuỗi nhị phân là giá trị byte.

Chức năng này là một chức năng gỡ lỗi nhằm mục đích sử dụng nội bộ. Nó có thể được sử dụng để kiểm tra và gỡ lỗi các đối chiếu. Lưu ý rằng hành vi của nó có thể thay đổi giữa các phiên bản MySQL.

Cú pháp

Cú pháp như sau:

WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])

Ở đâu str là chuỗi đầu vào. AS tùy chọn mệnh đề cho phép bạn truyền chuỗi đầu vào thành một kiểu và độ dài nhất định. Các cờ flags tùy chọn đối số hiện không được sử dụng trong MySQL (kể từ phiên bản 8.0).

Ví dụ 1 - Cách sử dụng cơ bản

Dưới đây là một ví dụ cơ bản về cách sử dụng bằng cách sử dụng chuỗi đầu vào không nhị phân:

SELECT HEX(WEIGHT_STRING('Cat'));

Kết quả:

+---------------------------+
| HEX(WEIGHT_STRING('Cat')) |
+---------------------------+
| 1C7A1C471E95              |
+---------------------------+

Lưu ý rằng tôi sử dụng HEX() để hiển thị WEIGHT_STRING() kết quả. Điều này là do WEIGHT_STRING() trả về một kết quả nhị phân. Chúng ta có thể sử dụng HEX() để hiển thị kết quả ở dạng có thể in được.

Nếu tôi không sử dụng HEX() trong ví dụ này, tôi nhận được điều này:

SELECT WEIGHT_STRING('Cat');

Kết quả:

+----------------------+
| WEIGHT_STRING('Cat') |
+----------------------+
| zG?                |
+----------------------+

Vì vậy, chỉ cần rõ ràng, đây là chuỗi, biểu diễn thập lục phân của chuỗi đó và biểu diễn thập lục phân của chuỗi trọng số của nó:

SET @str = 'Cat';
SELECT @str, HEX(@str), HEX(WEIGHT_STRING(@str));

Kết quả:

+------+-----------+--------------------------+
| @str | HEX(@str) | HEX(WEIGHT_STRING(@str)) |
+------+-----------+--------------------------+
| Cat  | 436174    | 1C7A1C471E95             |
+------+-----------+--------------------------+

Ví dụ 2 - Mệnh đề AS

Đây là một ví dụ sử dụng AS mệnh đề để truyền chuỗi đầu vào thành một kiểu và độ dài nhất định.

SET @str = 'Cat';
SELECT 
  HEX(WEIGHT_STRING(@str AS CHAR(3))) 'Char 3',
  HEX(WEIGHT_STRING(@str AS CHAR(8))) 'Char 8',
  HEX(WEIGHT_STRING(@str AS BINARY(3))) 'Binary 3',
  HEX(WEIGHT_STRING(@str AS BINARY(8))) 'Binary 8';

Kết quả:

+--------------+--------------+----------+------------------+
| Char 3       | Char 8       | Binary 3 | Binary 8         |
+--------------+--------------+----------+------------------+
| 1C7A1C471E95 | 1C7A1C471E95 | 436174   | 4361740000000000 |
+--------------+--------------+----------+------------------+

Ví dụ 3 - Đối chiếu

Hai ví dụ sau đây chứng minh cách một chuỗi có thể có một chuỗi trọng số khác nhau, tùy thuộc vào đối chiếu đang được sử dụng. Đối chiếu được sử dụng trong ví dụ đầu tiên là không phân biệt trọng âm và không phân biệt chữ hoa chữ thường. Đối chiếu được sử dụng trong ví dụ thứ hai là phân biệt trọng âm và phân biệt chữ hoa chữ thường.

SET @upper = _utf8mb4 'CAT' COLLATE utf8mb4_0900_ai_ci;
SET @lower = lcase(@upper);
SELECT 
  @upper 'String', 
  HEX(@upper) 'Hex', 
  HEX(WEIGHT_STRING(@upper)) 'Weight String'
UNION ALL
SELECT 
  @lower, 
  HEX(@lower), 
  HEX(WEIGHT_STRING(@lower));

Kết quả:

+--------+--------+---------------+
| String | Hex    | Weight String |
+--------+--------+---------------+
| CAT    | 434154 | 1C7A1C471E95  |
| cat    | 636174 | 1C7A1C471E95  |
+--------+--------+---------------+

Và đây là ví dụ tương tự, ngoại trừ đối chiếu phân biệt trọng âm và phân biệt chữ hoa chữ thường.

SET @upper = _utf8mb4 'CAT' COLLATE utf8mb4_0900_as_cs;
SET @lower = lcase(@upper);
SELECT 
  @upper 'String', 
  HEX(@upper) 'Hex', 
  HEX(WEIGHT_STRING(@upper)) 'Weight String'
UNION ALL
SELECT 
  @lower, 
  HEX(@lower), 
  HEX(WEIGHT_STRING(@lower));

Kết quả:

+--------+--------+----------------------------------------------+
| String | Hex    | Weight String                                |
+--------+--------+----------------------------------------------+
| CAT    | 434154 | 1C7A1C471E9500000020002000200000000800080008 |
| cat    | 636174 | 1C7A1C471E9500000020002000200000000200020002 |
+--------+--------+----------------------------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo cơ sở dữ liệu trực quan với MySQL Workbench

  2. Ví dụ QUARTER () - MySQL

  3. Cách xuất cơ sở dữ liệu bằng dòng lệnh

  4. Kết nối với mysql trong vùng chứa docker từ máy chủ

  5. Hàm MySQL LOG2 () - Trả về Logarit cơ số 2 của một giá trị