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

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

Trong MariaDB, CONVERT() là một hàm được tích hợp sẵn để chuyển đổi một giá trị sang một kiểu dữ liệu khác. Nó nhận một giá trị của một kiểu và trả về một giá trị của kiểu được chỉ định.

Bạn cung cấp giá trị dưới dạng đối số khi bạn gọi hàm, cũng như kiểu mà bạn muốn nó được chuyển đổi thành.

CONVERT() tương tự như CAST() .

Cú pháp

CONVERT() có thể được gọi hàm bằng cú pháp ODBC hoặc cú pháp SQL92.

Cú pháp ODBC:

CONVERT(expr, type)

Cú pháp SQL92:

CONVERT(expr USING charset)

Ở đâu expr là giá trị cần chuyển đổi, type là kiểu dữ liệu mà bạn muốn nó được chuyển đổi thành.

Sử dụng cú pháp SQL92, charset là bộ ký tự mà bạn muốn chuyển đổi thành.

Ví dụ

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

SELECT CONVERT(123.45, INT);

Kết quả:

+----------------------+
| CONVERT(123.45, INT) |
+----------------------+
|                  123 |
+----------------------+

Điều này đã chuyển đổi giá trị thành một số nguyên, loại bỏ các vị trí thập phân.

Đây là một ví dụ khác:

SELECT CONVERT('2020-01-01', DATETIME);

Kết quả:

+---------------------------------+
| CONVERT('2020-01-01', DATETIME) |
+---------------------------------+
| 2020-01-01 00:00:00             |
+---------------------------------+

Trong trường hợp này, chúng tôi đã chuyển đổi một chuỗi thành DATETIME kiểu dữ liệu.

Chuyển đổi không thành công

Trong ví dụ trước, chúng tôi đã cung cấp DATE hợp lệ string (hoặc DATE nghĩa đen). Do đó MariaDB có thể chuyển đổi giá trị thành DATETIME kiểu dữ liệu.

Tuy nhiên, đây là điều sẽ xảy ra khi chúng tôi cung cấp DATE không hợp lệ chuỗi:

SELECT CONVERT('1 Jan, 2020', DATE);

Kết quả:

+------------------------------+
| CONVERT('1 Jan, 2020', DATE) |
+------------------------------+
| NULL                         |
+------------------------------+

Tại đây, MariaDB không thể tìm ra cách chuyển đổi giá trị này và trả về NULL .

Trong trường hợp này, chúng tôi có thể sử dụng một hàm khác, chẳng hạn như STR_TO_DATE() để thực hiện chuyển đổi như vậy:

SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');

Kết quả:

+-----------------------------------------+
| STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') |
+-----------------------------------------+
| 2020-01-01                              |
+-----------------------------------------+

Chỉ định một bộ ký tự

Cú pháp SQL92 cho phép chúng tôi chỉ định một bộ ký tự để chuyển đổi thành.

Ví dụ:

SELECT CONVERT('ไม้เมือง' USING tis620);

Kết quả:

+--------------------------------------------------+
| CONVERT('ไม้เมือง' USING tis620)                   |
+--------------------------------------------------+
| ไม้เมือง                                           |
+--------------------------------------------------+

Thay đổi bộ ký tự cũng sẽ thay đổi đối chiếu thành đối chiếu mặc định cho bộ ký tự đó.

Ví dụ trên không thực sự chứng minh bộ ký tự / đối chiếu đã thay đổi như thế nào.

May mắn thay, chúng ta có thể sử dụng các hàm như CHARSET()COLLATION() để xem bộ ký tự và đối chiếu đã thay đổi như thế nào:

SELECT 
    CHARSET('ไม้เมือง') AS a,
    COLLATION('ไม้เมือง') AS b,
    CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
    COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;

Kết quả:

+------+-----------------+--------+----------------+
| a    | b               | c      | d              |
+------+-----------------+--------+----------------+
| utf8 | utf8_general_ci | tis620 | tis620_thai_ci |
+------+-----------------+--------+----------------+

Cái đầu tiên sử dụng bộ ký tự và đối chiếu cho kết nối của tôi. Cái thứ hai sử dụng bộ ký tự mà chúng tôi đã chỉ định rõ ràng với CONVERT() , cũng như đối chiếu mặc định cho bộ ký tự đó.

Xem danh sách các ảnh ghép này có sẵn trong MariaDB để biết danh sách đầy đủ các ảnh ghép và bộ ký tự phù hợp của chúng.

Đối số rỗng

Đang cố gắng chuyển đổi null trả về null :

SELECT CONVERT(null, DATETIME);

Kết quả:

+-------------------------+
| CONVERT(null, DATETIME) |
+-------------------------+
| NULL                    |
+-------------------------+

Tuy nhiên, chuyển null mà không chỉ định kiểu dữ liệu mới dẫn đến lỗi cú pháp:

SELECT CONVERT(null);

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Thiếu đối số

Đang gọi CONVERT() mà không chuyển đối số dẫn đến lỗi cú pháp:

SELECT CONVERT();

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều cần kiểm tra xem Mức độ sử dụng I / O của MySQL có cao không

  2. ClusterControl CMON HA cho tính khả dụng cao của cơ sở dữ liệu phân tán - Phần thứ hai (Thiết lập quyền truy cập GUI)

  3. Triển khai MySQL Galera Cluster 4.0 trên Amazon AWS EC2

  4. Cài đặt MariaDB trên máy Mac

  5. Nhập phân vùng InnoDB trong MariaDB 10.0 / 10.1