ตัวอย่างประกอบด้วยฟังก์ชันต่างๆ เช่น SUM(), AVG(), COUNT(), MAX และ MIN() อย่างไรก็ตาม สิ่งหนึ่งที่คุณจะสังเกตเห็นเกี่ยวกับฟังก์ชันรวมใน SQL ก็คือฟังก์ชันเหล่านี้มุ่งเน้นไปที่การดำเนินการเชิงตัวเลข
แต่คุณรู้หรือไม่ว่ามีฟังก์ชันรวมที่จัดการกับค่าสตริง? ในบทช่วยสอนนี้ เราจะดูฟังก์ชันเหล่านี้ วิธีการทำงาน และวิธีการใช้งานในฐานข้อมูลของเรา
หมายเหตุ: เป็นข้อสังเกตที่ดีว่าฟังก์ชันส่วนใหญ่ที่กล่าวถึงในโพสต์นี้ไม่ได้เป็นส่วนหนึ่งของ SQL มาตรฐาน เป็นผลให้เป็นส่วนขยายของเอ็นจิ้นฐานข้อมูลต่าง ๆ เช่น PostgreSQL, SQL Server เป็นต้น
ฟังก์ชันรวมสตริงคืออะไร?
ฟังก์ชันการรวมสตริงคือชุดของฟังก์ชันที่ดำเนินการรวมในชุดสตริงภายในกลุ่มหรือแถวและส่งกลับผลลัพธ์เดียว
เราใช้ฟังก์ชันเหล่านี้กับส่วนคำสั่ง GROUP BY เป็นหลักเพื่อจัดกลุ่มแถวตามคอลัมน์ใดคอลัมน์หนึ่ง จากนั้นจึงรวมสตริงในแต่ละกลุ่ม
ฟังก์ชันการรวมสตริงทั่วไปบางส่วนได้แก่:
- GROUP_CONCAT() – PostgreSQL และ MySQL
- STRING_AGG – เซิร์ฟเวอร์ SQL
- ARRAY_AGG – PostgreSQL
- LISTAGG – ออราเคิล
ให้เราสำรวจแต่ละฟังก์ชันและสิ่งที่มีให้
GROUP_CONCAT()
ฟังก์ชัน GROUP_CONCAT() ได้รับการสนับสนุนโดยฐานข้อมูล PostgreSQL และ MySQL ช่วยให้เราสามารถเชื่อมค่าจากหลายแถวให้เป็นสตริงเดียวได้
สมมติว่าเรามีตาราง 'พนักงาน' ดังนี้:
สร้างพนักงานตาราง (Employee_id INT AUTO_INCREMENT คีย์หลัก
first_name วาร์ชาร์(50)
นามสกุล VARCHAR(50),
แผนก VARCHAR(50)
-
INSERT INTO พนักงาน (first_name, Last_name, department) ค่านิยม
('อลิซ', 'สมิธ', 'ทรัพยากรบุคคล'),
('บ๊อบ', 'จอห์นสัน', 'การตลาด'),
('ชาร์ลี', 'วิลสัน', 'การเงิน'),
('เดวิด', 'บราวน์', 'ยอดขาย'),
('เอวา', 'เดวิส', 'วิศวกรรมศาสตร์');
เอาท์พุท:
หากเราต้องการกำหนดชื่อเต็มของพนักงานโดยใช้ชื่อจริงและต่อเข้ากับนามสกุล เราสามารถใช้ฟังก์ชัน GROUP_CONCAT() ดังแสดงในตัวอย่างต่อไปนี้:
เลือกแผนก,
GROUP_CONCAT(first_name, ' ', นามสกุล) AS full_name
จาก
พนักงาน
จัดกลุ่มตาม
แผนก;
ในกรณีนี้ เราใช้ฟังก์ชันเพื่อเชื่อมสตริงจากคอลัมน์ 'first_name' และ 'last_name' เข้าด้วยกัน และใช้สตริงว่างเพื่อเพิ่มช่องว่างให้กับชื่อ
ประกอบด้วยรายชื่อพนักงานในแต่ละแผนก
STRING_AGG
ฟังก์ชันนี้คล้ายกับฟังก์ชัน GROUP_CONCAT() แต่รองรับเฉพาะในฐานข้อมูล SQL Server เท่านั้น
ตัวอย่างการใช้งานมีดังนี้:
เลือกแผนก,
STRING_AGG(first_name, Last_name, ' ') AS full_name
จาก
พนักงาน
จัดกลุ่มตาม
แผนก;
ซึ่งดำเนินการต่อสตริงบนคอลัมน์ที่ระบุเป็นช่องว่างเป็นตัวคั่น
ARRAY_AGG
ฟังก์ชัน ARRAY_AGG มีเฉพาะในฐานข้อมูล PostgreSQL เท่านั้น ช่วยให้เรารวมค่าต่างๆ ไว้ในอาร์เรย์เดียวได้
ตัวอย่างมีดังนี้:
เลือกแผนก,
ARRAY_AGG(first_name) AS Employee_list
จาก
พนักงาน
จัดกลุ่มตาม
แผนก;
สิ่งนี้ควรรวมชื่อพนักงานเป็นอาร์เรย์
รายชื่อ()
ฟังก์ชัน LISTAGG() มีเฉพาะในฐานข้อมูล Oracle เท่านั้น ช่วยให้เราสามารถต่อค่าต่างๆ เข้าด้วยกันเป็นสตริงเดียวโดยมีตัวคั่นที่ระบุ
ตัวอย่างมีดังนี้:
แผนก SELECT, LISTAGG(first_name, Last_name, ' ') ภายในกลุ่ม (เรียงตามชื่อพนักงาน ASC) AS พนักงานจากพนักงาน
จัดกลุ่มตามแผนก
ซึ่งจะเชื่อมชื่อของพนักงานและตัวคั่นที่ระบุเข้าด้วยกัน
บทสรุป
ในบทช่วยสอนนี้ เราได้เรียนรู้เกี่ยวกับฟังก์ชันการรวมสตริงที่ช่วยให้เราสามารถจัดทำรายการค่าสตริงและดำเนินการกับค่าสตริงผลลัพธ์เดียว