MySQL IF[] nhận ba biểu thức và nếu biểu thức đầu tiên là true, không phải 0 và không phải NULL, nó sẽ trả về biểu thức thứ hai. Mặt khác, nó trả về biểu thức thứ ba
Tùy thuộc vào ngữ cảnh mà nó được sử dụng, nó trả về giá trị số hoặc chuỗi
cú pháp
IF[expression ,expr_true, expr_false];
Thông số
TênMô tảKiểu trả vềbiểu thứcMột biểu thức. expr_trueTrả về khi điều kiện là TRUE. một chuỗi khi expr_true là một chuỗi, một giá trị dấu phẩy động khi expr _true là một giá trị dấu phẩy động và một số nguyên khi expr _true là một số nguyên. expr_falseTrả về khi điều kiện là FALSE. một chuỗi khi expr_false là một chuỗi, một giá trị dấu phẩy động khi expr _false là một giá trị dấu phẩy động và một số nguyên khi expr _false là một số nguyên
Phiên bản MySQL. 5. 6
Ghi chú. Có một hàm khác, khác với hàm IF[] được mô tả trong chương thủ tục MySQL
Trình bày bằng hình ảnh
Ví dụ. Hàm IF[] của MySQL
Trong câu lệnh sau, vì 1 nhỏ hơn 3, nên hàm IF[] trả về biểu thức thứ ba, i. e. SAI
Mã số
SELECT IF[1>3,'true','false'];
Đầu ra mẫu
mysql> SELECT IF[1>3,'true','false']; +------------------------+ | IF[1>3,'true','false'] | +------------------------+ | false | +------------------------+ 1 row in set [0.00 sec]
Ví dụ. hàm IF[] với CASE
Trong ví dụ sau, câu lệnh MySQL trả về biểu thức thứ ba 'false' vì biểu thức đầu tiên không đúng
Mã số
SELECT IF[[SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END],'true','false'];
Đầu ra mẫu
mysql> SELECT IF[[SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END],'true','false']; +------------------------------------------------------------------------+ | IF[[SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END],'true','false'] | +------------------------------------------------------------------------+ | false | +------------------------------------------------------------------------+ 1 row in set, 1 warning [0.02 sec]
MySQL IF trong câu lệnh CHỌN
Câu lệnh MySQL sau đây trả về tên cuốn sách và cuốn sách đã được xuất bản bằng ngôn ngữ nào. Trạng thái của ngôn ngữ là English Book for pub lang English nếu không nó trả về 'Other Language'
Mã số
SELECT book_name,
IF[pub_lang='English',"English Book","Other Language"]
AS Language
FROM book_mast;
bảng mẫu. book_mast
Đầu ra mẫu
mysql> SELECT book_name, -> IF[pub_lang="English", "Engllish Book", "Other Lnaguage"] -> AS Language -> FROM book_mast; +-------------------------------------+----------------+ | book_name | Language | +-------------------------------------+----------------+ | Introduction to Electrodynamics | Engllish Book | | Understanding of Steel Construction | Engllish Book | | Guide to Networking | Other Lnaguage | | Transfer of Heat and Mass | Engllish Book | | Conceptual Physics | Other Lnaguage | | Fundamentals of Heat | Other Lnaguage | | Advanced 3d Graphics | Other Lnaguage | | Human Anatomy | Other Lnaguage | | Mental Health Nursing | Engllish Book | | Fundamentals of Thermodynamics | Engllish Book | | The Experimental Analysis of Cat | Other Lnaguage | | The Nature of World | Engllish Book | | Environment a Sustainable Future | Other Lnaguage | | Concepts in Health | Other Lnaguage | | Anatomy & Physiology | Other Lnaguage | | Networks and Telecommunications | Other Lnaguage | +-------------------------------------+----------------+ 16 rows in set [0.02 sec]
MySQL CHỌN trong câu lệnh IF
Câu lệnh MySQL sau đây trả về tên sách, số isbn và bí danh cột Trang/Giá của một biểu thức từ bảng book_mast. Trang/Giá sẽ là Giá khi số lượng ngôn ngữ khác ngoài tiếng Anh nhiều hơn ngôn ngữ khác tiếng Anh thì Trang/Giá sẽ là Trang và không có trang. Ở đây trong ví dụ này, số sách ngôn ngữ khác nhiều hơn số sách tiếng Anh
Mã số
SELECT book_name,isbn_no,
IF[[SELECT COUNT[*] FROM book_mast WHERE pub_lang='English']>
[SELECT COUNT[*] FROM book_mast WHERE pub_lang'English'],
[CONCAT["Pages: ",no_page]],[CONCAT["Price: ",book_price]]]
AS "Page / Price"
FROM book_mast;
bảng mẫu. book_mast
Đầu ra mẫu
________số 8_______Hiển thị văn bản tùy chỉnh thay vì NULL bằng hàm MySQL IF
Trong bảng book_mast, ngôn ngữ xuất bản của một số cuốn sách chưa được đặt, do đó khi chúng tôi chọn book_mast, cột pub_lang hiển thị giá trị NULL, không có ý nghĩa cho mục đích báo cáo. Xem truy vấn sau
mysql> SELECT book_id, book_name, pub_lang -> FROM book_mast; +---------+-------------------------------------+----------+ | book_id | book_name | pub_lang | +---------+-------------------------------------+----------+ | BK001 | Introduction to Electrodynamics | English | | BK002 | Understanding of Steel Construction | English | | BK003 | Guide to Networking | Hindi | | BK004 | Transfer of Heat and Mass | English | | BK005 | Conceptual Physics | NULL | | BK006 | Fundamentals of Heat | German | | BK007 | Advanced 3d Graphics | Hindi | | BK008 | Human Anatomy | German | | BK009 | Mental Health Nursing | English | | BK010 | Fundamentals of Thermodynamics | English | | BK011 | The Experimental Analysis of Cat | French | | BK012 | The Nature of World | English | | BK013 | Environment a Sustainable Future | German | | BK014 | Concepts in Health | NULL | | BK015 | Anatomy & Physiology | Hindi | | BK016 | Networks and Telecommunications | French | +---------+-------------------------------------+----------+ 16 rows in set [0.00 sec]
Chúng ta có thể tránh hiển thị NULL ở đầu ra bằng cách sử dụng hàm IF để trả về N/A thay vì NULL. Đây là truy vấn dưới đây
Mã số
SELECT IF[1>3,'true','false'];
0Đầu ra mẫu
SELECT IF[1>3,'true','false'];
1Hàm IF của MySQL với các hàm tổng hợp
MySQL SUM IF – Hàm IF với hàm SUM
bảng mẫu. mua
Câu lệnh SQL sau đây sẽ hiển thị số lượng mua sách xuất bản theo ngôn ngữ tiếng Anh và không phải tiếng Anh liên tiếp
Mã số
SELECT IF[1>3,'true','false'];
2Đầu ra mẫu
SELECT IF[1>3,'true','false'];
3MySQL COUNT IF – Hàm IF với hàm COUNT
bảng mẫu. nhà xuất bản
Câu lệnh sql sau đây sẽ hiển thị số lượng nhà xuất bản liên tiếp cho mỗi quốc gia được liệt kê trong bảng nhà xuất bản
Mã số
SELECT IF[1>3,'true','false'];
4Đầu ra mẫu
SELECT IF[1>3,'true','false'];
5Một cách khác để đạt được kết quả tương tự, bạn có thể sử dụng mệnh đề GROUP BY và hàm COUNT mà không sử dụng hàm IF, báo cáo hiển thị khác hẳn. Đầu ra ở trên đã hiển thị trong một hàng nhưng truy vấn sau đây sẽ hiển thị số lượng hàng cho số lượng quốc gia khác nhau. Đây là mã và kết quả