Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

รวมฟังก์ชันใน MySQL (Nested Functions)

Nesting Functions = ใส่ฟังก์ชันเป็นอาร์กิวเมนต์ของอีกฟังก์ชัน

ตัวอย่าง: UPPER + CONCAT

mysql> SELECT UPPER(CONCAT('www.', 'tutorialspoint', '.com')) AS Tutorials;
+------------------------+
| Tutorials              |
+------------------------+
| WWW.TUTORIALSPOINT.COM |
+------------------------+

ตัวอย่าง: LOWER + CONCAT

mysql> SELECT LOWER(CONCAT('WWW.', 'TUTORIALSPOINT', '.COM')) AS Tutorials;
+------------------------+
| Tutorials              |
+------------------------+
| www.tutorialspoint.com |
+------------------------+

หลักการ

  1. ฟังก์ชันในสุด (Inner) รันก่อน
  2. ผลลัพธ์ส่งให้ฟังก์ชันนอก (Outer)
  3. สามารถซ้อนได้หลายชั้น

ตัวอย่างซ้อน 3 ชั้น

SELECT TRIM(UPPER(CONCAT('  ', 'hello', '  ')));
-- CONCAT → '  hello  '
-- UPPER → '  HELLO  '
-- TRIM → 'HELLO'

ฟังก์ชันที่รวมกันบ่อย

  • String: CONCAT, SUBSTRING, REPLACE, TRIM, UPPER/LOWER
  • Date: DATE_FORMAT, DATE_ADD, NOW
  • Math: ROUND, ABS, POWER
  • Control: IF, COALESCE, NULLIF

ข้อควรระวัง

  • Performance: Nested function เรียกซ้ำหลายครั้งใน WHERE clause
  • Readability: ซ้อนมากเกินไปอ่านยาก → ใช้ CTE/Subquery แทน
  • NULL handling: ฟังก์ชันส่วนใหญ่คืน NULL ถ้าอินพุตมี NULL