เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ ภาษาคิวรีที่มีโครงสร้างมีคำสั่งแบบมีเงื่อนไขที่ควบคุมการไหลของข้อมูล ฟังก์ชัน IF จะส่งกลับคำสั่งหากตรงตามเงื่อนไขและคำสั่งประเภทอื่น (หรือไม่มีเลย) หากไม่ตรงตามเงื่อนไข มาดูฟังก์ชัน SQL IF โดยใช้ MySQL
การเตรียมตัว
SQL Fiddle นี้ลิงก์ไปยังสคีมาตัวอย่างที่มีชื่อ อายุ และเพศ นี่คือสิ่งที่เราดำเนินการในบทความนี้ สร้างตารางใน IDE ของคุณเองด้วยสคีมานี้:
create table names ( id INT, name VARCHAR(50), age INT, gender VARCHAR(50) ); insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M'); insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F'); insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F'); insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F'); insert into names (id, name, age, gender) values (5, 'Estrella Borleace', 57, 'F'); insert into names (id, name, age, gender) values (6, 'Washington Pittwood', 75, 'M'); insert into names (id, name, age, gender) values (7, 'Phaedra Tertre', 27, 'F'); insert into names (id, name, age, gender) values (8, 'Nicolina Elie', 76, 'F'); insert into names (id, name, age, gender) values (9, 'Hugh Hughson', 86, 'M'); insert into names (id, name, age, gender) values (10, 'Dare Ravilious', 59, 'M'); insert into names (id, name, age, gender) values (11, 'Cad Levins', 13, 'M'); insert into names (id, name, age, gender) values (12, 'Sollie Kimbury', 33, 'M'); insert into names (id, name, age, gender) values (13, 'Elga Rearie', 61, 'F'); insert into names (id, name, age, gender) values (14, 'Cherey Terron', 54, 'F'); insert into names (id, name, age, gender) values (15, 'Abbie Kent', 23, 'F'); insert into names (id, name, age, gender) values (38, 'Nelia Picot', 2, 'F'); insert into names (id, name, age, gender) values (39, 'Benedetto Smithin', 33, 'M'); insert into names (id, name, age, gender) values (40, 'Rickie Maymand', 83, 'F'); insert into names (id, name, age, gender) values (41, 'Kristoforo Dashkov', 6, 'M'); insert into names (id, name, age, gender) values (42, 'Cherice Genty', 6, 'F'); insert into names (id, name, age, gender) values (43, 'Shirley Fake', 95, 'F'); insert into names (id, name, age, gender) values (44, 'Aeriel Plant', 36, 'F'); insert into names (id, name, age, gender) values (45, 'Halimeda Gook', 74, 'F'); insert into names (id, name, age, gender) values (46, 'Minor Harriot', 63, 'M'); insert into names (id, name, age, gender) values (47, 'Greggory Found', 61, 'M'); insert into names (id, name, age, gender) values (48, 'Vivien Braund', 94, 'F'); insert into names (id, name, age, gender) values (49, 'Gaylord Pochet', 96, 'M'); insert into names (id, name, age, gender) values (77, 'Nataline Sealand', 43, 'F')
IF()
IF(expression ,expr_true, expr_false);
ไวยากรณ์สำหรับฟังก์ชัน IF ในฐานข้อมูล MySQL ใช้คีย์เวิร์ด IF แล้วรับพารามิเตอร์สามตัว ได้แก่ นิพจน์บูลีนที่ฟังก์ชันกำลังประเมิน คำสั่งที่จะส่งคืนหากเงื่อนไขเป็นจริง และคำสั่งที่ส่งคืนหากเงื่อนไขเป็นเท็จ .
SELECT name, age, IF(age >= 18, "YES", "NO") AS OVER_18 FROM names;
ข้อความค้นหาของเราด้านบนจะเลือกชื่อและอายุของรายการของเรา จากนั้นเลือกเงื่อนไขที่เราเรียกว่า OVER_18 ผลลัพธ์บางส่วนของ SQL ของเราแสดงอยู่ด้านล่าง (คุณสามารถดูผลลัพธ์แบบเต็มได้ใน SQL Fiddle นี้):
ชื่อ | อายุ | OVER_18 |
เบร็ท สตาร์คิงส์ | 55 | ใช่ |
บ็อบบี้ เอคเคล | 76 | ใช่ |
บาร์บี้ เวสชี่ | 50 | ใช่ |
Electra Blazewicz | 47 | ใช่ |
เอสเทรลลา บอร์ลีซ | 57 | ใช่ |
วอชิงตัน พิตต์วูด | 75 | ใช่ |
เฟดรา เทอร์เต | 27 | ใช่ |
นิโคลินา เอลี | 76 | ใช่ |
ฮิวจ์ ฮิวจ์สัน | 86 | ใช่ |
กล้าได้กล้าเสีย | 59 | ใช่ |
แคด เลวินส์ | 13 | ไม่ |
IFNULL()
IFNULL()
เป็นคำสั่งแบบมีเงื่อนไขที่ถามว่านิพจน์แรกเป็น NULL หรือไม่ ถ้าใช่ จะส่งกลับนิพจน์ที่สอง ไม่ใช่นิพจน์แรก
IFNULL(NULL, 2) ⇒ returns 2 IFNULL(0, 4) ⇒ returns 0 SELECT name, IFNULL(age, "NOT ENTERED") AS age FROM names;
คำสั่ง MySQL นี้ส่งคืนคอลัมน์ที่เรียกว่า age ซึ่งจะเขียนทับทุกรายการที่เป็น NULL ด้วยสตริง “NOT ENTERED”
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
NULLIF()
NULLIF()
ส่งคืนค่า NULL เมื่อทั้งสองนิพจน์ที่ส่งผ่านไปยังฟังก์ชันมีค่าเท่ากัน
SELECT name, NULLIF(name, age) AS FROM names;
นี่เป็นตัวอย่างที่รุนแรงเพราะอาจจะไม่เคยมีกรณีที่ชื่อและอายุจะเท่ากัน แต่นี่เป็นวิธีการเขียนไวยากรณ์อย่างน้อยที่สุด คุณนึกถึงกรณีที่บล็อกคำสั่งนี้จะเป็นประโยชน์หรือไม่
บทสรุป
ใน MySQL มีฟังก์ชันที่แตกต่างกันสองสามอย่างที่ช่วยให้เราควบคุมการไหลของข้อมูลของเราได้ แนวคิดเหล่านี้ได้รับการแปลเป็นฐานข้อมูลใดก็ตามที่คุณทำงานด้วย โปรดดูเอกสารสำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์เกี่ยวกับฐานข้อมูลเฉพาะของคุณ