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

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

Trong MariaDB, LENGTH() là một hàm chuỗi tích hợp trả về độ dài của đối số chuỗi đã cho.

Khi ở chế độ mặc định, độ dài của chuỗi được đo bằng byte. Nhưng khi ở chế độ Oracle, nó được tính bằng ký tự.

Cú pháp

Cú pháp như sau:

LENGTH(str)

Ở đâu str là chuỗi mà độ dài sẽ được trả về.

Ví dụ

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

SELECT LENGTH('café');

Kết quả:

+-----------------+
| LENGTH('café')  |
+-----------------+
|               5 |
+-----------------+

Trong trường hợp này, chuỗi dài bốn ký tự nhưng LENGTH() trả về 5 .

Điều này là do ký tự cuối cùng sử dụng hai byte và tôi đang sử dụng chế độ SQL mặc định (sql_mode=DEFAULT của tôi ). Khi ở chế độ SQL mặc định, LENGTH() trả về số byte.

Chế độ Oracle

Chuyển sang chế độ Oracle dẫn đến LENGTH() chỉ trả về số ký tự trong chuỗi (trái ngược với số byte).

Hãy chuyển phiên của chúng ta sang chế độ Oracle:

SET SESSION sql_mode='ORACLE';

Và bây giờ hãy chạy LENGTH() trước ví dụ một lần nữa:

SELECT LENGTH('café');

Kết quả:

+-----------------+
| LENGTH('café')  |
+-----------------+
|               4 |
+-----------------+

Lần này, nó trả về số ký tự (4) thay vì số byte (5).

Khi ở chế độ Oracle, LENGTH() trả về cùng một kết quả là CHAR_LENGTH() và từ đồng nghĩa của nó, CHARACTER_LENGTH() .

So sánh với CHAR_LENGTH()BIT_LENGTH()

Hãy chuyển về chế độ mặc định:

SET SESSION sql_mode=DEFAULT;

Dưới đây là so sánh nhanh giữa LENGTH() khi ở chế độ mặc định, CHAR_LENGTH()BIT_LENGTH() trả về số bit trong một chuỗi:

SELECT 
    LENGTH('อ'),
    CHAR_LENGTH('อ'),
    BIT_LENGTH('อ');

Kết quả:

+---------------+--------------------+-------------------+
| LENGTH('อ')   | CHAR_LENGTH('อ')   | BIT_LENGTH('อ')   |
+---------------+--------------------+-------------------+
|             3 |                  1 |                24 |
+---------------+--------------------+-------------------+

Ký tự tiếng Thái này ( ) sử dụng 3 byte và do đó LENGTH() trả về 3 .

CHAR_LENGTH() trả về 1 , bởi vì nó vẫn chỉ là một ký tự duy nhất và BIT_LENGTH() trả về số bit (24 ).

Một lần nữa, nếu chúng ta đang ở chế độ Oracle, LENGTH() sẽ trả về giống như CHAR_LENGTH() .

Không phải chuỗi

Nếu đối số không phải là một chuỗi, nó sẽ được chuyển đổi thành một chuỗi.

Dưới đây là một ví dụ khác sử dụng một số:

SELECT LENGTH(1234);

Kết quả:

+--------------+
| LENGTH(1234) |
+--------------+
|            4 |
+--------------+

Đối số rỗng

Chuyển null trả về null :

SELECT LENGTH(null);

Kết quả:

+--------------+
| LENGTH(null) |
+--------------+
|         NULL |
+--------------+

Thiếu đối số

Đang gọi LENGTH() mà không chuyển đối số dẫn đến lỗi:

SELECT LENGTH();

Kết quả:

ERROR 1582 (42000): Incorrect parameter count in the call to native function '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 ColumnStore là gì?

  2. Cách sao lưu cơ sở dữ liệu Moodle MariaDB của bạn

  3. Cách SPACE () hoạt động trong MariaDB

  4. Cách hoạt động của GREATEST () trong MariaDB

  5. Tránh khóa nhà cung cấp cơ sở dữ liệu cho MySQL hoặc MariaDB