Trong bài này mình sẽ hướng dẫn cách sử dụng hàm CAST
trong MySQL
thông qua cú pháp và ví dụ thực tế.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
1. Mô tả
Hàm CAST
chuyển đổi một giá
trị từ một kiểu dữ liệu này sang kiểu dữ liệu khác.
2. Cú pháp
Cú pháp của hàm CAST
trong MySQL
là:
Trong đó:
Bài viết này được đăng tại [free tuts .net]
value
: Giá trị để chuyển đổi sang kiểu dữ liệu khác.type
: Kiểu dữ liệu mà bạn muốn chuyển đổi giá trị thành. Nó có thể là một trong những điều sau đây:
Giá trị | Mô tả |
DATE | Chuyển đổi giá trị thành loại DATE, chỉ có phần ngày. Định dạng là 'YYYY-MM-DD'. Phạm vi được hỗ trợ là '1000-01-01' đến '9999-12-31'. |
DATETIME | Chuyển đổi giá trị thành loại DATETIME, có cả phần ngày và thời gian. Định dạng là 'YYYY-MM-DD HH: MM: SS'. Phạm vi được hỗ trợ là '1000-01-01 00:00:00' đến '9999-12-31 23:59:59'. |
TIME | Chuyển đổi giá trị thành loại TIME, chỉ có phần thời gian. Định dạng là 'HH: MM: SS'. Phạm vi được hỗ trợ là '-838: 59: 59' đến '838: 59: 59'. |
CHAR | Chuyển đổi giá trị thành loại CHAR, là một chuỗi có độ dài cố định. |
SIGNED | Chuyển đổi giá trị thành loại SIGNED, là số nguyên 64 bit có dấu. |
UNSIGNED | Chuyển đổi giá trị thành loại UNSIGNED, là số nguyên 64 bit không dấu |
BINARY | Chuyển đổi giá trị thành loại BINARY, là một chuỗi nhị phân. |
3. Version
Hàm CAST
có thể được sử dụng trong các phiên bản sau của MySQL
:
- MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0.2
4. Ví dụ
mysql> SELECT CAST['2019-04-2' AS DATE]; Ket qua: '2019-04-02' mysql> SELECT CAST['2019-04-2 09:15:50' AS DATETIME]; Ket qua: '2019-04-02 09:15:50' mysql> SELECT CAST['09:15:50' AS TIME]; Ket qua: '09:15:50' mysql> SELECT CAST[12345678 AS CHAR]; Ket qua: '12345678' mysql> SELECT CAST[9-12 AS SIGNED]; Ket qua: -3 mysql> SELECT CAST[9-12 AS UNSIGNED]; Ket qua: 18446744073709551613
Trong bài này mình sẽ hướng dẫn cách sử dụng hàm CAST trong MySQL thông qua cú pháp và ví dụ thực tế. 1. Mô tả Hàm CAST chuyển đổi một giá trị từ một kiểu dữ liệu này sang kiểu dữ liệu khác. 2. Cú pháp Cú pháp của hàm CAST trong MySQL ...
Trong bài này mình sẽ hướng dẫn cách sử dụng hàm CAST
trong MySQL
thông qua cú pháp và ví dụ thực tế.
1. Mô tả
Hàm CAST
chuyển đổi một giá trị từ một kiểu dữ liệu này sang kiểu dữ liệu khác.
2. Cú pháp
Cú pháp của hàm CAST
trong MySQL
là:
Trong đó:
value
: Giá trị để chuyển đổi sang kiểu dữ liệu khác.type
: Kiểu dữ liệu mà bạn muốn chuyển đổi giá trị thành. Nó có thể là một trong những điều sau đây:
3. Version
Hàm CAST
có thể được sử dụng trong các phiên bản sau của MySQL
:
- MySQL 5.7, MySQL 5.6, MySQL 5.5, MySQL 5.1, MySQL 5.0, MySQL 4.1, MySQL 4.0.2
4. Ví dụ
mysql> SELECT CAST['2019-04-2' AS DATE]; Ket qua: '2019-04-02' mysql> SELECT CAST['2019-04-2 09:15:50' AS DATETIME]; Ket qua: '2019-04-02 09:15:50' mysql> SELECT CAST['09:15:50' AS TIME]; Ket qua: '09:15:50' mysql> SELECT CAST[12345678 AS CHAR]; Ket qua: '12345678' mysql> SELECT CAST[9-12 AS SIGNED]; Ket qua: -3 mysql> SELECT CAST[9-12 AS UNSIGNED]; Ket qua: 18446744073709551613
Nguồn: Zaidap.com.net
Hàm CAST trong MySQL / MariaDB chuyển đổi một giá trị hoặc biểu thức từ một kiểu dữ liệu này sang kiểu dữ liệu khác. Minh thấy hàm CAST so với hàm CONVERT chỉ khác nhau về cú pháp, còn chức năng thì giống nhau hoàn toàn, chưa thấy khác gì nhau. Trong đó: expr: biển thức hoặc giá trị cần chuyển đổi type[array]: kiểu dữ liệu mà bạn muốn chuyển đổi sang, [array] có thể hiểu là tùy chọn của kiểu
dữ liệu Ví dụ về kiểu CHAR. Nếu tùy chọn charater set không được khai báo thì kết quả trả về sẽ sử dụng character set và collation mặc định. Phần này nâng cao 1 chút mình sẽ nói ở cuối bài. Lưu ý cách sử dụng Quảng cáo Ví dụ về kiểu DATETIME. Ví dụ về kiểu DECIMAL. Nhìn ví dụ các bạn có thể thấy nếu độ dài phần nguyên lớn hơn m-d thì kết quả trả về bị sai. Nếu m không được khai báo thì phần nguyên có độ dài tối đa là 10 Trong hàm CAST nếu bạn khai báo CHARACTER SET thì hàm sẽ sử dụng Collation mặc định của CHARATER SET đó Để xem collation mặc định của CHARACTER SET ta sử dụng lệnh Nếu bạn không khai báo
CHARACTER SET thì hàm sẽ sử dụng character set và collation từ biến hệ thống character_set_connection và collation_connection Ta sử dụng lệnh sau để kiểm tra character set và collation Hoặc có thể dùng lệnh Bài
viết dựa trên MySQL Document và chạy trên MySQL 8.0.26 và MariaDB 10.2. Mong được các bạn đóng góp ý kiến để website ngày càng phát triển.Cú pháp
CAST[expr AS type [ARRAY]]
Các kiểu dữ liệu
Kiểu dữ liệu
Mô tả
DATE
Trả về kiểu dữ liệu ngày tháng YYY-MM-DD
DATETIME[m]
Trả về kiểu dữ liệu ngày tháng YYYY-MM-DD HH:MM:SS. Nếu m được khai báo thì kết quả trả về sẽ bao gồm độ dài mini giây phía sau.
TIME[m]
Trả về kiểu dữ liệu giờ phút HH:MM:SS. Nếu m được khai báo thì kết quả trả về là độ dài mini giây phía sau.
SIGNED
Trả về kiểu dữ liệu số nguyên có dấu BIGINT [dấu âm dương]
UNSIGNED
Trả về kiểu dữ liệu số nguyên không dấu BIGINT
DECIMAL[m,d]
Trả về kiểu dữ liệu số thập phân. Nếu d và m được khai báo thì m-d là số chữ số phần nguyên và d là số chữ số hàng thập phân
BINARY
Trả về kiểu dữ liệu BINARY [chuỗi binary]
JSON
Trả về kiểu dữ liệu JSON [mình sẽ có 1 bài về kiểu dữ liệu này]
CHAR[m]
Trả về kiểu dữ liệu VARCHAR. Nếu m được khai báo thì kết quả trả về chuỗi có độ dài là m. Nếu độ dài của chuỗi nhỏ hơn m thì không có khoảng trắng, ngược lại độ dài chuỗi lớn hơn m thì chuỗi bị cắt đi. Nếu chuỗi quá dài kết quả trả về sẽ là kiểu TEXT hoặc LONGTEXT
Một số ví dụ
SELECT CAST[1500 AS CHAR[2]]; -- > kết quả 15
SELECT CAST['test' AS CHAR CHARACTER SET utf8];
SELECT CAST['test' AS CHAR CHARACTER SET utf8] COLLATE utf8_bin;
SELECT CAST['2022-05-21 14:06:10' AS TIME]; -- > kết quả 14:06:10
SELECT CAST['14:50:23.25642' AS TIME[3]]; -- > kết quả 14:50:23.256
SELECT CAST['2021/12/15 12:13:56' AS DATETIME[3]]; -- > kết quả '2021-12-15 12:13:56.000'
SELECT CAST['123456.0104' AS decimal[8,2]]; -- > kết quả đúng '123456.01'
SELECT CAST['123456.0104' AS decimal[7,2]]; -- > kết quả sai '99999.99'
SELECT CAST['123456.0104' AS decimal[6]]; -- > kết quả '123456'
SELECT CAST['12345678901.0104' AS decimal]; -- > kết quả sai '9999999999'
Character set và Collation mặc định
SHOW CHARACTER SET;
SELECT * FROM performance_schema.session_variables
WHERE VARIABLE_NAME IN [
'character_set_client', 'character_set_connection',
'character_set_results', 'collation_connection'
] ORDER BY VARIABLE_NAME;
SHOW SESSION VARIABLES LIKE 'character\_set\_%';
SHOW SESSION VARIABLES LIKE 'collation\_%';