Đôi khi bạn có thể cần truyền dữ liệu dưới dạng boolean trong MySQL. Dưới đây là cách truyền dưới dạng boolean trong MySQL. Chúng ta sẽ xem xét cách ép kiểu chuỗi dưới dạng boolean và ép kiểu int dưới dạng boolean.
Cách truyền dưới dạng Boolean trong MySQL
Dưới đây là các bước để truyền dưới dạng boolean trong MySQL. MySQL cho phép bạn truyền dữ liệu bằng cách sử dụng các hàm CAST và CONVERT. Tuy nhiên, cả hai đều không hỗ trợ chuyển đổi sang kiểu dữ liệu boolean. Thay vào đó, bạn cần truyền dưới dạng UNSIGNED INT. Chúng ta hãy xem một ví dụ để ép chuỗi dưới dạng boolean
Phần thưởng đọc:MySQL CAST so với CONVERT
Cách truyền chuỗi dưới dạng Boolean
Giả sử bạn có cột chuỗi sau sản phẩm chứa các giá trị chuỗi
mysql> select product from product_orders; +---------+ | product | +---------+ | A | | B | | C | | A | | B | | C | | A | | B | | C | +---------+
Giả sử bạn muốn chuyển đổi chuỗi thành boolean trong đó product =True nếu nó là A khác False, thì đây là truy vấn SQL để truyền chuỗi dưới dạng boolean.
mysql> select cast(product='A' as unsigned) from product_orders; +-------------------------------+ | cast(product='A' as unsigned) | +-------------------------------+ | 1 | | 0 | | 0 | | 1 | | 0 | | 0 | | 1 | | 0 | | 0 | +-------------------------------+
Trong câu hỏi trên, vui lòng lưu ý,
1. Chúng tôi ĐÚC thành kiểu dữ liệu UNSIGNED vì cả hai hàm CAST và CONVERT đều không hỗ trợ chuyển đổi trực tiếp sang kiểu dữ liệu boolean
2. MySQL lưu dữ liệu boolean dưới dạng tinyint (1), tức là 1 hoặc 0, chứ không phải giá trị True / False. Vì tinyint có thể dễ dàng được lưu dưới dạng int unsigned nên chúng ta chuyển chuỗi thành unsigned int.
3. Chúng tôi sử dụng một biểu thức điều kiện (product =’A’) bên trong ép kiểu có đầu ra là boolean. Bạn không thể chuyển đổi trực tiếp một cột chuỗi thành boolean bằng CAST hoặc CONVERT. Đây là kết quả bạn sẽ nhận được nếu cố gắng làm như vậy.
mysql> select cast(product as unsigned) from product_orders; +---------------------------+ | cast(product as unsigned) | +---------------------------+ | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | +---------------------------+
Bạn có thể sửa đổi biểu thức điều kiện khi cần. Ví dụ:đây là truy vấn SQL nếu bạn muốn chuyển đổi product =A hoặc product =B thành true và còn lại là false.
mysql> select cast(product='A' or product='B' as unsigned) from product_orders; +----------------------------------------------+ | cast(product='A' or product='B' as unsigned) | +----------------------------------------------+ | 1 | | 1 | | 0 | | 1 | | 1 | | 0 | | 1 | | 1 | | 0 | +----------------------------------------------+
hoặc bạn cũng có thể sử dụng truy vấn sau để nhận được kết quả tương tự.
mysql> select cast(product in ('A','B') as unsigned) from product_orders;
Cách truyền vào dưới dạng Boolean
Giả sử bạn có cột int sau số tiền trong bảng của bạn.
mysql> select amount from product_orders; +--------+ | amount | +--------+ | 250 | | 150 | | 200 | | 250 | | 210 | | 125 | | 350 | | 225 | | 150 | +--------+
Giả sử bạn muốn chuyển đổi int thành boolean trong đó số tiền <200 là Đúng, còn lại Sai. Đây là truy vấn SQL để truyền int dưới dạng boolean.
mysql> select cast(amount<200 as unsigned) from product_orders; +------------------------------+ | cast(amount<200 as unsigned) | +------------------------------+ | 0 | | 1 | | 0 | | 0 | | 0 | | 1 | | 0 | | 0 | | 1 | +------------------------------+
Bạn cũng có thể sử dụng MySQL Convert thay cho MySQL CAST cho mỗi truy vấn ở trên. Đây là một ví dụ về truy vấn trên, sử dụng MySQL CONVERT.
mysql> select convert(amount<200, unsigned) from product_orders;
Hy vọng rằng bây giờ bạn có thể dễ dàng ép kiểu boolean trong MySQL.
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!