ฟังก์ชันการรวมสตริง SQL

Fangkchan Kar Rwm String Sql



หากคุณเคยจัดการกับฐานข้อมูล SQL คุณอาจคุ้นเคยกับฟังก์ชันการรวม โดยพื้นฐานแล้วคือชุดของฟังก์ชันที่ทำการคำนวณชุดของค่าและส่งกลับผลลัพธ์เดียว

ตัวอย่างประกอบด้วยฟังก์ชันต่างๆ เช่น 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 พนักงาน
จากพนักงาน
จัดกลุ่มตามแผนก

ซึ่งจะเชื่อมชื่อของพนักงานและตัวคั่นที่ระบุเข้าด้วยกัน

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้เกี่ยวกับฟังก์ชันการรวมสตริงที่ช่วยให้เราสามารถจัดทำรายการค่าสตริงและดำเนินการกับค่าสตริงผลลัพธ์เดียว