ฉันต้องการใช้ตัวดำเนินการเงื่อนไขที่สามใน 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
หรือและแม้กระทั่ง''
0
mySQL เป็นบิตของ 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)