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

Cách UNCOMPRESSED_LENGTH () hoạt động trong MariaDB

Trong MariaDB, UNCOMPRESSED_LENGTH() là một hàm tích hợp trả về độ dài của một chuỗi được nén trước khi nó được nén bằng COMPRESS() chức năng.

Cú pháp

Cú pháp như sau:

UNCOMPRESSED_LENGTH(compressed_string)

Trong đó compressed_string là chuỗi nén.

Ví dụ

Đây là một ví dụ cơ bản:

SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50)));

Kết quả:

+------------------------------------------------+
| UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) |
+------------------------------------------------+
|                                             50 |
+------------------------------------------------+

Ở đây, tôi đã sử dụng REPEAT() chức năng lặp lại cùng một chữ cái 50 lần. Việc lặp lại ký tự khiến nó trở thành một ứng cử viên tốt để nén.

So với chuỗi nén

Đây là một lần nữa, được so sánh với chuỗi nén:

SELECT
    LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) AS "Uncompressed";

Kết quả:

+------------+--------------+
| Compressed | Uncompressed |
+------------+--------------+
|         16 |           50 |
+------------+--------------+

Độ dài byte so với Độ dài ký tự

UNCOMPRESSED_LENGTH() báo cáo về độ dài tính bằng byte (trái ngược với chỉ độ dài ký tự).

Chúng tôi có thể kiểm tra điều này bằng cách sử dụng một ký tự nhiều byte, chẳng hạn như ký hiệu bản quyền (© ), sau đó chuyển nó đến các hàm như LENGTH() để lấy độ dài tính bằng byte và CHAR_LENGTH() để lấy độ dài ký tự:

SELECT 
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('©', 50))) AS "UNCOMPRESSED_LENGTH()",
    LENGTH(REPEAT('©', 50)) AS "Uncompressed (Bytes)",
    LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Bytes)",
    CHAR_LENGTH(REPEAT('©', 50)) AS "Uncompressed (Char)",
    CHAR_LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Char)";

Kết quả (sử dụng đầu ra dọc):

UNCOMPRESSED_LENGTH(): 100
 Uncompressed (Bytes): 100
   Compressed (Bytes): 17
  Uncompressed (Char): 50
    Compressed (Char): 17

Dưới đây là một ví dụ khác sử dụng ký tự tiếng Thái:

SELECT 
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "UNCOMPRESSED_LENGTH()",
    LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Bytes)",
    LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Bytes)",
    CHAR_LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Char)",
    CHAR_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Char)";

Kết quả (sử dụng đầu ra dọc):

UNCOMPRESSED_LENGTH(): 150
 Uncompressed (Bytes): 150
   Compressed (Bytes): 18
  Uncompressed (Char): 50
    Compressed (Char): 18

Ký tự tiếng Thái này sử dụng 3 byte và do đó chúng tôi kết thúc bằng 150 byte cho chuỗi không nén, mặc dù chuỗi chỉ dài 50 ký tự.

Đối số rỗng

Chuyển null trả về null :

SELECT UNCOMPRESSED_LENGTH(null);

Kết quả:

+---------------------------+
| UNCOMPRESSED_LENGTH(null) |
+---------------------------+
|                      NULL |
+---------------------------+

Thiếu đối số

Đang gọi UNCOMPRESSED_LENGTH() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT UNCOMPRESSED_LENGTH();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESSED_LENGTH'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB JSON_MERGE_PRESERVE () Giải thích

  2. Cách cắt ngắn văn bản bằng dấu chấm lửng trong MariaDB

  3. Giám sát MySQL chủ động (Developer Studio / Góc cố vấn)

  4. Tính khả dụng cao của cơ sở dữ liệu cho Camunda BPM sử dụng MySQL hoặc MariaDB Galera Cluster

  5. Các phương pháp hay nhất trong cơ sở dữ liệu chia tỷ lệ:Phần thứ hai