ฉันต้องการใช้ตัวดำเนินการเงื่อนไขที่สามใน MySQL ฉันมีตารางที่มีรหัสเขตข้อมูลหนึ่งรายการ ค่าของมันอาจเป็นโมฆะ ฉันต้องการแสดงidในรูปแบบเงื่อนไขแบบ ternary ดังนี้:
select id = id == null ? 0 : id;
เป็นไปได้ใน MySQL?
ฉันต้องการใช้ตัวดำเนินการเงื่อนไขที่สามใน MySQL ฉันมีตารางที่มีรหัสเขตข้อมูลหนึ่งรายการ ค่าของมันอาจเป็นโมฆะ ฉันต้องการแสดงidในรูปแบบเงื่อนไขแบบ ternary ดังนี้:
select id = id == null ? 0 : id;
เป็นไปได้ใน MySQL?
คำตอบ:
ลองสิ่งนี้:
select if(Id is null, 0, id) as Id;
nullหรือและแม้กระทั่ง'' 0mySQL เป็นบิตของ duche ในบางครั้ง
เอกสารเป็นเพื่อนของคุณ คุณควรอ่าน!
มันบอกว่า:
IFNULL(expr1,expr2)ถ้า
expr1ไม่ได้NULL,IFNULL()ผลตอบแทนexpr1; มิฉะนั้นจะกลับexpr2มา
แล้วก็มีตัวอย่างมากมาย สิ่งนี้เทียบเท่ากับการใช้เงื่อนไขNULLด้านท้ายที่มีการเปรียบเทียบและเรื่องการเปรียบเทียบเป็นตัวถูกดำเนินการที่สอง มันไม่ได้เกิดขึ้นเพื่อใช้สัญลักษณ์?และ:เพื่อให้คุณเข้าใจว่าไม่มีความเกี่ยวข้องกับอะไรเลย
ดังนั้นในกรณีของคุณ:
SELECT IFNULL(`id`, 0) FROM `table`
หากคุณต้องการให้ตัวถูกดำเนินการสามตัวอย่างชัดเจน (ทำไม?!) ให้เปลี่ยนเป็นIF:
SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULLเป็นคนขี้โมโห
IFแทนIFNULLหรือCOALESCEเนื่องจากฉันกำลังย้ายข้อมูลไปยังฐานข้อมูลผู้ขายรายอื่นและไม่ต้องการนำเข้าค่าที่ไม่ใช่ค่าว่างเพียง แต่ตีความว่าเป็นสถานะทั่วไป SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_statusเหมาะกับฉัน
มีสองวิธีที่คุณสามารถใช้ตรรกะเดียวกันกับตัวดำเนินการด้านท้าย:
IFฟังก์ชันเช่นIF(expression, true result, false result)ใช้CASEนิพจน์เช่น
CASE WHEN expression THEN <true result> ELSE <false_result> END
เมื่อคุณกำลังตรวจสอบ NULL คุณสามารถใช้IFNULLหรือCOALESCEฟังก์ชั่นเช่น
IFNULL(ID, 0)
COALESCE(ID, 0)