- ฟังก์ชัน CASE ใน MySQL ช่วยให้คุณสามารถประเมินตามเงื่อนไขและส่งคืนผลลัพธ์ที่กำหนดเองได้
- สามารถใช้เงื่อนไขต่างๆ ได้กับคำสั่ง WHEN และจัดการค่า null ได้กับคำสั่ง ELSE
- สามารถรวม CASE เข้ากับฟังก์ชันการรวมเพื่อเพิ่มประสิทธิภาพการค้นหาได้
- การปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้ CASE ถือเป็นสิ่งสำคัญในการรักษาประสิทธิภาพและความสามารถในการอ่านของโค้ด
ฟังก์ชัน CASE ใน MySQL เป็นเครื่องมืออันทรงพลังที่ช่วยให้คุณสามารถดำเนินการตามเงื่อนไขภายในแบบสอบถามของคุณได้ ด้วย CASE คุณสามารถประเมินเงื่อนไขต่าง ๆ และส่งผลลัพธ์ที่เฉพาะเจาะจงขึ้นอยู่กับว่าตรงตามเงื่อนไขเหล่านั้นหรือไม่ เราจะอธิบายฟังก์ชันนี้ด้วยตัวอย่างเชิงปฏิบัติที่จะช่วยให้คุณเชี่ยวชาญการใช้ CASE ใน MySQL และปรับปรุงทักษะของคุณในการจัดการฐานข้อมูล
ฟังก์ชัน CASE ใน MySQL คืออะไร?
ฟังก์ชัน CASE ใน MySQLเป็นนิพจน์เงื่อนไขที่ช่วยให้คุณประเมินเงื่อนไขต่างๆ และส่งคืนผลลัพธ์ที่เฉพาะเจาะจงขึ้นอยู่กับว่าเงื่อนไขเหล่านั้นเป็นจริงหรือไม่ เป็นเครื่องมือที่มีประโยชน์มากสำหรับการดำเนินการเชิงตรรกะภายในคำสั่ง SQL ของคุณ และการรับผลลัพธ์ที่กำหนดเองตามเกณฑ์เฉพาะ
CASE ทำงานในลักษณะเดียวกับชุดคำสั่ง IF-THEN-ELSE โดยคุณสามารถระบุเงื่อนไขต่างๆ ได้หลายรายการและค่าที่จะส่งคืนเมื่อตรงตามเงื่อนไขเหล่านั้น หากไม่เป็นไปตามเงื่อนไขใดๆ คุณสามารถกำหนดค่าเริ่มต้นโดยใช้คำสั่ง ELSE
ไวยากรณ์ CASE ขั้นพื้นฐานใน MySQL
รูปแบบพื้นฐานของฟังก์ชัน CASE ใน MySQL มีดังนี้:
CASE
WHEN condición1 THEN resultado1
WHEN condición2 THEN resultado2
...
WHEN condiciónN THEN resultadoN
ELSE resultado_predeterminado
END
ต่อไปนี้เป็นคำอธิบายของแต่ละส่วนของไวยากรณ์:
WHEN: ระบุเงื่อนไขที่ต้องการประเมินTHEN:ระบุผลลัพธ์ที่จะส่งคืนถ้าตรงตามเงื่อนไขที่สอดคล้องกันELSE: (ทางเลือก) ระบุผลลัพธ์ที่จะส่งคืนหากไม่มีการตอบสนองเงื่อนไขข้างต้นEND: ทำเครื่องหมายจุดสิ้นสุดของนิพจน์ CASE
ตอนนี้คุณรู้ไวยากรณ์พื้นฐานแล้ว มาดูตัวอย่างในทางปฏิบัติกัน!
ตัวอย่างที่ 1 : จำแนกนักเรียนตามค่าเฉลี่ย
สมมติว่าคุณมีตารางชื่อ “นักเรียน” ซึ่งมีคอลัมน์ดังต่อไปนี้: “id”, “name” และ “avg” คุณต้องการจัดอันดับนักเรียนตาม GPA โดยใช้ฟังก์ชัน CASE คุณสามารถทำได้ดังนี้:
SELECT nombre,
CASE
WHEN promedio >= 90 THEN 'Sobresaliente'
WHEN promedio >= 80 THEN 'Notable'
WHEN promedio >= 70 THEN 'Bien'
WHEN promedio >= 60 THEN 'Suficiente'
ELSE 'Insuficiente'
END AS clasificacion
FROM estudiantes;
ในตัวอย่างนี้ เราใช้ CASE เพื่อประเมินค่าเฉลี่ยของนักเรียนแต่ละคนและกำหนดอันดับที่สอดคล้องกัน หากค่าเฉลี่ยมากกว่าหรือเท่ากับ 90 จะจัดอยู่ในประเภท "ดีเยี่ยม" หากอยู่ระหว่าง 80 ถึง 89 ก็จัดเป็น “น่าสังเกต” เป็นต้น หากค่าเฉลี่ยน้อยกว่า 60 ถือว่า “ไม่เพียงพอ”
ตัวอย่างที่ 2: การกำหนดหมวดหมู่ผลิตภัณฑ์
ลองนึกภาพว่าคุณมีตารางชื่อ “ผลิตภัณฑ์” ซึ่งมีคอลัมน์ “id” “ชื่อ” และ “ราคา” คุณต้องการกำหนดหมวดหมู่ให้กับผลิตภัณฑ์แต่ละรายการตามราคาโดยใช้ฟังก์ชัน CASE คุณสามารถทำได้ดังนี้:
SELECT nombre,
CASE
WHEN precio > 1000 THEN 'Premium'
WHEN precio > 500 THEN 'Gama alta'
WHEN precio > 100 THEN 'Gama media'
ELSE 'Económico'
END AS categoria
FROM productos;
ในตัวอย่างนี้ เราใช้ CASE เพื่อประเมินราคาของผลิตภัณฑ์แต่ละรายการและกำหนดหมวดหมู่ที่สอดคล้องกัน หากราคาสูงกว่า 1000 จะถูกจัดเป็น “พรีเมี่ยม” หากอยู่ระหว่าง 500 ถึง 1000 จะจัดเป็นระดับ “High-End” เป็นต้น หากราคาต่ำกว่าหรือเท่ากับ 100 ถือว่าจัดอยู่ในประเภท “ประหยัด”
ตัวอย่างที่ 3: คำนวณส่วนลดตามปริมาณที่ซื้อ
สมมติว่าคุณมีตารางชื่อ “ยอดขาย” ซึ่งมีคอลัมน์ “id” “ผลิตภัณฑ์” และ “ปริมาณ” คุณต้องการคำนวณส่วนลดที่นำไปใช้กับการขายแต่ละครั้งตามปริมาณที่ซื้อโดยใช้ฟังก์ชัน CASE คุณสามารถทำได้ดังนี้:
SELECT producto,
CASE
WHEN cantidad >= 100 THEN 0.20
WHEN cantidad >= 50 THEN 0.15
WHEN cantidad >= 20 THEN 0.10
ELSE 0
END AS descuento
FROM ventas;
ในตัวอย่างนี้ เราใช้ CASE เพื่อประเมินปริมาณการซื้อของแต่ละผลิตภัณฑ์และคำนวณส่วนลดที่สอดคล้องกัน หากปริมาณมากกว่าหรือเท่ากับ 100 จะได้รับส่วนลด 20% หากอยู่ระหว่าง 50 ถึง 99 จะได้รับส่วนลด 15% เป็นต้น หากปริมาณน้อยกว่า 20 จะไม่ใช้ส่วนลด
ตัวอย่างที่ 4: การแปลงค่าตัวเลขให้เป็นช่วง
ลองนึกภาพว่าคุณมีตารางชื่อ “พนักงาน” ซึ่งมีคอลัมน์ “id” “ชื่อ” และ “อายุ” คุณต้องการแปลงอายุพนักงานเป็นช่วงโดยใช้ฟังก์ชัน CASE คุณสามารถทำได้ดังนี้:
SELECT nombre,
CASE
WHEN edad >= 60 THEN 'Senior'
WHEN edad >= 40 THEN 'Mediana edad'
WHEN edad >= 20 THEN 'Joven'
ELSE 'Menor de edad'
END AS rango_edad
FROM empleados;
ในตัวอย่างนี้ เราใช้ CASE เพื่อประเมินอายุของพนักงานแต่ละคนและกำหนดช่วงที่สอดคล้องกัน ถ้าอายุมากกว่าหรือเท่ากับ 60 ปี จัดเป็น “ผู้สูงอายุ” หากคุณมีอายุระหว่าง 40 ถึง 59 ปี คุณจะจัดอยู่ในกลุ่ม “วัยกลางคน” เป็นต้น หากอายุต่ำกว่า 20 ปี จัดอยู่ในประเภท “ผู้เยาว์”
ตัวอย่างที่ 5: การกำหนดป้ายกำกับตามเงื่อนไขต่างๆ
สมมติว่าคุณมีตารางชื่อ “คำสั่งซื้อ” ซึ่งมีคอลัมน์ “id” “ลูกค้า” “รวม” และ “สถานะ” คุณต้องการกำหนดป้ายกำกับให้กับแต่ละคำสั่งซื้อตามยอดรวมและสถานะโดยใช้ฟังก์ชัน CASE พร้อมเงื่อนไขหลายรายการ คุณสามารถทำได้ดังนี้:
SELECT cliente,
CASE
WHEN total > 1000 AND estado = 'Entregado' THEN 'VIP'
WHEN total > 500 AND estado = 'Entregado' THEN 'Prioritario'
WHEN estado = 'Pendiente' THEN 'En proceso'
ELSE 'Regular'
END AS etiqueta
FROM pedidos;
ในตัวอย่างนี้ เราใช้ CASE พร้อมเงื่อนไขต่างๆ หลายข้อเพื่อประเมินทั้งยอดรวมและสถานะของแต่ละคำสั่งซื้อ และกำหนดป้ายกำกับที่เหมาะสม หากยอดรวมมากกว่า 1000 และสถานะเป็น “จัดส่งแล้ว” จะแสดงเป็น “VIP” หากยอดรวมมากกว่า 500 และสถานะคือ “จัดส่งแล้ว” จะถูกแท็กเป็น “ลำดับความสำคัญ” หากสถานะเป็น “รอดำเนินการ” จะมีข้อความว่า “อยู่ระหว่างดำเนินการ” หากไม่เช่นนั้นจะระบุว่า “ปกติ”
ตัวอย่างที่ 6: การจัดการค่า null ด้วย CASE
ลองนึกภาพว่าคุณมีตารางชื่อ “ลูกค้า” ซึ่งมีคอลัมน์ “id” “ชื่อ” และ “อีเมล” ลูกค้าบางรายอาจไม่มีอีเมลในไฟล์ ซึ่งจะส่งผลให้มีค่าว่างในคอลัมน์ “อีเมล” คุณสามารถใช้ฟังก์ชัน CASE เพื่อจัดการค่า null เหล่านี้ได้อย่างเหมาะสม ตัวอย่างเช่น:
SELECT nombre,
CASE
WHEN email IS NULL THEN 'Sin correo electrónico'
ELSE email
END AS informacion_contacto
FROM clientes;
ในตัวอย่างนี้ เราใช้ CASE เพื่อประเมินว่าคอลัมน์ “อีเมล” เป็นค่าว่างหรือไม่ หากเป็นค่าว่าง จะแสดงข้อความ “ไม่มีอีเมล” มิฉะนั้น ค่าจริงของคอลัมน์ "อีเมล" จะแสดง วิธีนี้ช่วยให้เราจัดการกรณีที่ขาดข้อมูลการติดต่อได้อย่างเหมาะสม
ตัวอย่างที่ 7: การรวม CASE เข้ากับฟังก์ชันการรวม
ฟังก์ชัน CASE ยังสามารถรวมกับฟังก์ชันรวม เช่น SUM, AVG, COUNT เป็นต้น สมมติว่าคุณมีตารางชื่อ “ยอดขาย” ซึ่งมีคอลัมน์ “id” “ผลิตภัณฑ์” “ปริมาณ” และ “ราคา” คุณต้องการคำนวณยอดขายรวมตามหมวดหมู่ผลิตภัณฑ์โดยใช้ CASE และ SUM คุณสามารถทำได้ดังนี้:
SELECT
SUM(CASE WHEN precio > 1000 THEN cantidad ELSE 0 END) AS ventas_premium,
SUM(CASE WHEN precio <= 1000 THEN cantidad ELSE 0 END) AS ventas_regulares
FROM ventas;
ในตัวอย่างนี้ เราใช้ CASE ภายในฟังก์ชัน SUM เพื่อคำนวณยอดขายรวมตามประเภทผลิตภัณฑ์ หากราคาสูงกว่า 1000 จำนวนเงินจะถูกเพิ่มไปที่ “premium_sales” หากราคาต่ำกว่าหรือเท่ากับ 1000 จำนวนเงินนั้นจะถูกเพิ่มลงใน “regular_sales” วิธีนี้ช่วยให้เราได้รับผลรวมย่อยตามเงื่อนไขเฉพาะได้
ตัวอย่างที่ 8: การใช้ CASE ในคำสั่ง WHERE
ฟังก์ชัน CASE ยังสามารถใช้ในคำสั่ง WHERE เพื่อกรองระเบียนตามเงื่อนไขเฉพาะได้ สมมติว่าคุณมีตารางชื่อ “พนักงาน” ซึ่งมีคอลัมน์ “id” “ชื่อ” “แผนก” และ “เงินเดือน” คุณต้องการกำหนดเป้าหมายไปที่พนักงานที่มีเงินเดือนสูงกว่าค่าเฉลี่ยของแผนกของตน คุณสามารถทำได้ดังนี้:
SELECT nombre, departamento, salario
FROM empleados
WHERE salario > (
SELECT AVG(CASE WHEN e.departamento = empleados.departamento THEN e.salario ELSE NULL END)
FROM empleados e
);
ในตัวอย่างนี้ เราใช้ CASE ในแบบสอบถามย่อยเพื่อคำนวณเงินเดือนโดยเฉลี่ยตามแผนก แบบสอบถามย่อยจะเปรียบเทียบแผนกของพนักงานแต่ละคนกับแผนกปัจจุบัน และพิจารณาเฉพาะเงินเดือนของพนักงานในแผนกเดียวกันเพื่อคำนวณค่าเฉลี่ย จากนั้นในแบบสอบถามหลัก เราจะกรองพนักงานที่มีเงินเดือนสูงกว่าค่าเฉลี่ยที่คำนวณไว้สำหรับแผนกของพวกเขาออกไป
ตัวอย่างที่ 9: การสร้างคอลัมน์ที่คำนวณด้วย CASE
ฟังก์ชัน CASE ยังสามารถใช้สร้างคอลัมน์ที่คำนวณตามเงื่อนไขเฉพาะได้ สมมติว่าคุณมีตารางชื่อ “คำสั่งซื้อ” ซึ่งมีคอลัมน์ “id” “ลูกค้า” “รวม” และ “วันที่” คุณต้องการสร้างคอลัมน์เพิ่มเติมชื่อ “ส่วนลด” ที่ใช้เปอร์เซ็นต์ส่วนลดต่างกันขึ้นอยู่กับยอดรวมของคำสั่งซื้อ คุณสามารถทำได้ดังนี้:
SELECT id, cliente, total,
CASE
WHEN total > 1000 THEN total * 0.10
WHEN total > 500 THEN total * 0.05
ELSE 0
END AS descuento,
fecha
FROM pedidos;
ในตัวอย่างนี้ เราใช้ CASE เพื่อสร้างคอลัมน์ “ส่วนลด” ที่คำนวณได้ หากยอดสั่งซื้อรวมมากกว่า 1000 จะได้รับส่วนลด 10% หากยอดรวมมากกว่า 500 จะได้รับส่วนลด 5% ในกรณีอื่น ๆ จะไม่มีส่วนลดใด ๆ เกิดขึ้น คอลัมน์ที่คำนวณได้นี้ใช้สำหรับการวิเคราะห์เพิ่มเติมหรือแสดงข้อมูลเพิ่มเติมในผลลัพธ์ของแบบสอบถาม
ตัวอย่างที่ 10: การนำตรรกะที่ซับซ้อนมาใช้งานด้วยคำสั่ง CASE แบบซ้อนกัน
ในบางกรณี คุณอาจจำเป็นต้องใช้ตรรกะเงื่อนไขที่ซับซ้อนมากขึ้นโดยใช้คำสั่ง CASE ซ้อนกัน สมมติว่าคุณมีตารางชื่อ “นักเรียน” ซึ่งมีคอลัมน์ “id” “name” “math_grade” และ “language_grade” คุณต้องการกำหนดหมวดหมู่ให้กับนักเรียนแต่ละคนตามเกรดในวิชาคณิตศาสตร์และภาษา คุณสามารถทำได้ดังนี้:
SELECT nombre,
CASE
WHEN nota_matematicas >= 90 AND nota_lenguaje >= 90 THEN 'Excelente'
WHEN nota_matematicas >= 80 AND nota_lenguaje >= 80 THEN 'Notable'
ELSE
CASE
WHEN nota_matematicas >= 70 OR nota_lenguaje >= 70 THEN 'Regular'
ELSE 'Necesita mejorar'
END
END AS categoria
FROM estudiantes;
ในตัวอย่างนี้ เราใช้คำสั่ง CASE ซ้อนกันเพื่อใช้ตรรกะเงื่อนไขที่ซับซ้อนยิ่งขึ้น ขั้นแรก เราจะประเมินว่าเกรดทั้งคณิตศาสตร์และภาษาสูงกว่าหรือเท่ากับ 90 หากเป็นเช่นนั้น เราจะกำหนดให้อยู่ในหมวด "ยอดเยี่ยม" จากนั้นเราจะประเมินว่าทั้งสองเกรดมากกว่าหรือเท่ากับ 80 หรือไม่ หากเป็นเช่นนั้น เกรดจะอยู่ในหมวด "โดดเด่น" หากไม่เป็นไปตามเงื่อนไขใดๆ ข้างต้น เราจะย้ายไปยังระดับถัดไปของ CASE ที่ซ้อนกัน ที่นี่ เราจะประเมินว่าเกรดอย่างน้อยหนึ่งเกรด (คณิตศาสตร์หรือภาษา) มากกว่าหรือเท่ากับ 70 หรือไม่ หากเป็นเช่นนั้น เกรดจะอยู่ในหมวด "ปกติ" หากไม่เป็นไปตามเงื่อนไขใดๆ ระบบจะจัดหมวดหมู่ “ต้องปรับปรุง”
ตัวอย่างที่ 11: เพิ่มประสิทธิภาพการค้นหาด้วย CASE
ฟังก์ชัน CASE ยังสามารถใช้เพื่อเพิ่มประสิทธิภาพการค้นหาและหลีกเลี่ยงการค้นหาแยกกันหลายรายการ สมมติว่าคุณมีตารางชื่อ “ยอดขาย” ซึ่งมีคอลัมน์ “id” “ผลิตภัณฑ์” “ปริมาณ” และ “วันที่” คุณต้องการรับยอดขายทั้งหมดต่อเดือนและยอดขายทั้งหมดต่อปีในแบบสอบถามเดียว คุณสามารถทำได้ดังนี้:
SELECT
SUM(CASE WHEN MONTH(fecha) = 1 THEN cantidad ELSE 0 END) AS ventas_enero,
SUM(CASE WHEN MONTH(fecha) = 2 THEN cantidad ELSE 0 END) AS ventas_febrero,
-- ... (continúa para los demás meses)
SUM(CASE WHEN YEAR(fecha) = 2022 THEN cantidad ELSE 0 END) AS ventas_2022,
SUM(CASE WHEN YEAR(fecha) = 2023 THEN cantidad ELSE 0 END) AS ventas_2023
FROM ventas;
ในตัวอย่างนี้ เราใช้ CASE ภายในฟังก์ชัน SUM เพื่อคำนวณยอดขายรวมตามเดือนและตามปีในแบบสอบถามเดียว สำหรับแต่ละเดือน เราจะประเมินว่าเดือนที่ขายตรงกับเดือนที่ระบุหรือไม่ จากนั้นจึงเพิ่มจำนวนเงินที่ตรงกัน ในทำนองเดียวกัน สำหรับแต่ละปี เราจะประเมินว่าปีของวันที่ขายตรงกับปีที่ระบุหรือไม่ จากนั้นจึงเพิ่มจำนวนเงินที่สอดคล้องกัน วิธีนี้ช่วยให้เราได้รับผลรวมทั้งหมดในแบบสอบถามที่มีประสิทธิภาพเพียงครั้งเดียว
แนวทางปฏิบัติที่ดีที่สุดเมื่อใช้ CASE ใน MySQL
- ใช้ CASE เฉพาะเมื่อจำเป็นและหลีกเลี่ยงการใช้มากเกินไป เนื่องจากอาจส่งผลต่อประสิทธิภาพการทำงานของการค้นหาหากใช้มากเกินไป
- พยายามทำให้นิพจน์ CASE มีความเรียบง่ายและอ่านง่ายที่สุดเท่าที่จะเป็นไปได้ หากตรรกะมีความซับซ้อนเกินไป ควรพิจารณาแยกตรรกะออกเป็นนิพจน์ CASE หลาย ๆ ตัว หรือใช้ซับคิวรี
- ใช้ CASE ร่วมกับคำสั่งและฟังก์ชัน MySQL อื่นๆ เพื่อใช้ประโยชน์จากศักยภาพของคำสั่งเหล่านี้ได้อย่างเต็มที่ เช่น ใน WHERE, ORDER BY จัดกลุ่มตาม และฟังก์ชั่นการรวมข้อมูล
- ควรระมัดระวังเมื่อทำการวางนิพจน์ CASE หลายรายการซ้อนกัน เพราะอาจทำให้โค้ดของคุณอ่านและบำรุงรักษายาก หากจำเป็นให้เพิ่มคำอธิบาย
ข้อผิดพลาดทั่วไปเมื่อใช้ CASE และวิธีหลีกเลี่ยง
- ลืมเรื่องคำสั่ง ELSE ไปได้เลย: อย่าลืมรวมข้อกำหนด ELSE ไว้ในการจัดการกรณีที่ไม่เป็นไปตามเงื่อนไขใด ๆ หากไม่ได้ระบุ ระบบจะกำหนดค่า NULL ตามค่าเริ่มต้น
- อย่ายุตินิพจน์ CASE ด้วย END: อย่าลืมจบนิพจน์ CASE ด้วยคีย์เวิร์ด END เสมอ มิฉะนั้นคุณจะได้รับข้อผิดพลาดทางไวยากรณ์
- ใช้ชนิดข้อมูลที่ไม่เข้ากัน: ตรวจสอบให้แน่ใจว่าผลลัพธ์ที่ส่งคืนโดยเงื่อนไข WHEN แต่ละข้อเป็นชนิดข้อมูลเดียวกัน หากคุณผสมประเภทข้อมูลเข้าด้วยกัน คุณอาจได้รับผลลัพธ์หรือข้อผิดพลาดที่ไม่คาดคิด
- ไม่คำนึงถึงลำดับเงื่อนไข:เงื่อนไขใน CASE จะได้รับการประเมินตามลำดับที่ปรากฏ อย่าลืมวางเงื่อนไขที่เจาะจงมากขึ้นก่อนเงื่อนไขทั่วไปเพื่อให้ได้ผลลัพธ์ที่ต้องการ
ทางเลือกอื่นสำหรับ CASE ใน MySQL
แม้ว่า CASE จะเป็นฟังก์ชันที่มีประสิทธิภาพ แต่ก็มีทางเลือกอื่นๆ ที่คุณอาจพิจารณาในบางกรณี:
- ถ้านิพจน์: ฟังก์ชั่น IF ใน MySQL ช่วยให้คุณประเมินเงื่อนไขและส่งคืนค่าถ้าเงื่อนไขเป็นจริงและส่งค่าอื่นถ้าเป็นเท็จ เป็นทางเลือกที่ง่ายกว่าสำหรับกรณีที่มีเงื่อนไขพิเศษ
- ตารางค้นหา:ในบางกรณี คุณสามารถใช้ตารางค้นหาแยกต่างหากเพื่อจัดเก็บเงื่อนไขและผลลัพธ์ที่สอดคล้องกัน จากนั้นคุณสามารถรวมตารางเหล่านี้เข้ากับตารางหลักเพื่อรับผลลัพธ์ที่ต้องการได้
- มุมมองหรือฟังก์ชั่นที่เก็บไว้:หากคุณมีคำถามที่ซับซ้อนซึ่งใช้ CASE เป็นประจำ คุณอาจพิจารณาสร้างมุมมองหรือ ฟังก์ชั่นที่เก็บไว้ เพื่อสรุปตรรกะนั้นและทำให้แบบสอบถามที่ตามมาเรียบง่ายขึ้น
คำถามที่พบบ่อยเกี่ยวกับ CASE ใน MySQL
1. ฉันสามารถใช้ CASE ร่วมกับฟังก์ชั่น MySQL อื่นๆ ได้หรือไม่
ใช่ คุณสามารถใช้ CASE ร่วมกับฟังก์ชัน MySQL อื่นๆ ได้ เช่น ฟังก์ชันรวม (SUM, AVG, COUNT เป็นต้น) ฟังก์ชันวันที่และเวลา (YEAR, MONTH, DAY เป็นต้น) ฟังก์ชันสตริง (CONCAT, SUBSTRING, LENGTH เป็นต้น) และอื่นๆ อีกมากมาย
2. มีข้อจำกัดเกี่ยวกับจำนวนเงื่อนไข WHEN ที่ฉันสามารถใช้ได้ในนิพจน์ CASE หรือไม่
ไม่มีข้อจำกัดที่เฉพาะเจาะจงเกี่ยวกับจำนวนเงื่อนไข WHEN ที่คุณสามารถใช้ในนิพจน์ CASE อย่างไรก็ตาม โปรดทราบว่าเงื่อนไขจำนวนมากสามารถส่งผลต่อการอ่านโค้ดและประสิทธิภาพการค้นหาได้ หากคุณมีเงื่อนไขมากมาย โปรดพิจารณาลดความซับซ้อนของตรรกะหรือแยกออกเป็นนิพจน์ CASE หลาย ๆ รายการ
3. ฉันสามารถใช้ซับเควรีภายในนิพจน์ CASE ได้หรือไม่
ใช่ คุณสามารถใช้ซับคิวรีภายในนิพจน์ CASE ได้ทั้งในเงื่อนไข WHEN และผลลัพธ์ THEN วิธีนี้ช่วยให้คุณสามารถดำเนินการคำนวณหรือการเปรียบเทียบที่ซับซ้อนมากขึ้นโดยอิงจากผลลัพธ์ของแบบสอบถามอื่น
4. ฉันจะจัดการค่า null ในนิพจน์ CASE ได้อย่างไร
คุณสามารถจัดการค่า null ในนิพจน์ CASE ได้โดยใช้เงื่อนไข IS NULL หรือ IS NOT NULL ตัวอย่างเช่น คุณสามารถใช้ CASE WHEN คอลัมน์ IS NULL THEN 'Null value' ELSE คอลัมน์ END เพื่อกำหนดค่าเฉพาะเมื่อคอลัมน์เป็นค่าว่าง และส่งคืนค่าจริงเมื่อไม่ใช่
บทสรุปกรณีใน MySQL
ฟังก์ชัน CASE ใน MySQL เป็นเครื่องมืออันทรงพลังและหลากหลายที่ช่วยให้คุณสามารถดำเนินการตามเงื่อนไขภายในแบบสอบถามของคุณได้ ด้วย CASE คุณสามารถประเมินเงื่อนไขต่าง ๆ และส่งผลลัพธ์ที่เฉพาะเจาะจงขึ้นอยู่กับว่าตรงตามเงื่อนไขเหล่านั้นหรือไม่ ตัวอย่างที่นำเสนอในบทความนี้จะให้รากฐานที่มั่นคงแก่คุณในการเริ่มใช้ CASE ในแบบสอบถามของคุณเองและปรับให้เหมาะกับความต้องการเฉพาะของคุณ
อย่าลืมปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเมื่อใช้ CASE เช่น การใช้สูตรที่เรียบง่ายและอ่านง่าย การใช้ CASE ร่วมกับคำสั่งและฟังก์ชันอื่นๆ ของ MySQLและการพิจารณาทางเลือกอื่นๆ เมื่อเหมาะสม ด้วยการฝึกฝนและการทดลอง คุณจะสามารถใช้ประโยชน์จาก CASE ใน MySQL ได้อย่างเต็มที่ และปรับปรุงประสิทธิภาพและความอ่านง่ายของคำสั่งค้นหาของคุณได้
หากคุณมีคำถามเพิ่มเติมหรือต้องการตัวอย่างเพิ่มเติม โปรดค้นหาแหล่งข้อมูลเพิ่มเติมหรือปรึกษาเอกสาร MySQL อย่างเป็นทางการ สำรวจและใช้ประโยชน์จากพลังของ CASE ในโครงการฐานข้อมูลของคุณต่อไป!
แหล่งข้อมูลเพิ่มเติม:
ดัชนี
- 0.1 ฟังก์ชัน CASE ใน MySQL คืออะไร?
- 0.2 ไวยากรณ์ CASE ขั้นพื้นฐานใน MySQL
- 0.3 ตัวอย่างที่ 1 : จำแนกนักเรียนตามค่าเฉลี่ย
- 0.4 ตัวอย่างที่ 2: การกำหนดหมวดหมู่ผลิตภัณฑ์
- 0.5 ตัวอย่างที่ 3: คำนวณส่วนลดตามปริมาณที่ซื้อ
- 0.6 ตัวอย่างที่ 4: การแปลงค่าตัวเลขให้เป็นช่วง
- 0.7 ตัวอย่างที่ 5: การกำหนดป้ายกำกับตามเงื่อนไขต่างๆ
- 0.8 ตัวอย่างที่ 6: การจัดการค่า null ด้วย CASE
- 0.9 ตัวอย่างที่ 7: การรวม CASE เข้ากับฟังก์ชันการรวม
- 0.10 ตัวอย่างที่ 8: การใช้ CASE ในคำสั่ง WHERE
- 0.11 ตัวอย่างที่ 9: การสร้างคอลัมน์ที่คำนวณด้วย CASE
- 0.12 ตัวอย่างที่ 10: การนำตรรกะที่ซับซ้อนมาใช้งานด้วยคำสั่ง CASE แบบซ้อนกัน
- 0.13 ตัวอย่างที่ 11: เพิ่มประสิทธิภาพการค้นหาด้วย CASE
- 1 แนวทางปฏิบัติที่ดีที่สุดเมื่อใช้ CASE ใน MySQL
- 2 ข้อผิดพลาดทั่วไปเมื่อใช้ CASE และวิธีหลีกเลี่ยง
- 3 ทางเลือกอื่นสำหรับ CASE ใน MySQL
- 4 คำถามที่พบบ่อยเกี่ยวกับ CASE ใน MySQL
- 5 บทสรุปกรณีใน MySQL