Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

ใช้ฟังก์ชัน IF(), NULLIF() และ IFNULL() ของ MySQL

เช่นเดียวกับภาษาการเขียนโปรแกรมอื่นๆ ภาษาคิวรีที่มีโครงสร้างมีคำสั่งแบบมีเงื่อนไขที่ควบคุมการไหลของข้อมูล ฟังก์ชัน 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 มีฟังก์ชันที่แตกต่างกันสองสามอย่างที่ช่วยให้เราควบคุมการไหลของข้อมูลของเราได้ แนวคิดเหล่านี้ได้รับการแปลเป็นฐานข้อมูลใดก็ตามที่คุณทำงานด้วย โปรดดูเอกสารสำหรับข้อมูลเพิ่มเติมเกี่ยวกับไวยากรณ์เกี่ยวกับฐานข้อมูลเฉพาะของคุณ