ดังนั้นการจัดการสตริงจึงเป็นงานทั่วไปที่เกี่ยวข้องกับการจัดการและการแปลงค่าสตริงให้อยู่ในรูปแบบเฉพาะ
หนึ่งในฟังก์ชันที่ทรงพลังที่สุดใน SQL ที่เกี่ยวข้องกับการดำเนินการสตริงคือฟังก์ชัน REGEXP_REPLACE() ฟังก์ชันนี้ช่วยให้เราทำการค้นหาและแทนที่ด้วยนิพจน์ทั่วไปได้ หากคุณคุ้นเคยกับนิพจน์ทั่วไป คุณจะรู้ว่าฟังก์ชันนี้มีประสิทธิภาพเพียงใด
ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ฟังก์ชันนี้เพื่อค้นหาและแทนที่สตริงในฐานข้อมูล SQL
SQL REGEXP_REPLACE
SQL REGEXP_REPLACE() เป็นฟังก์ชันที่ช่วยให้เราทำการจับคู่และแทนที่รูปแบบตามนิพจน์ทั่วไปภายในสตริงที่กำหนด
นิพจน์ทั่วไปหรือ regex คือรูปแบบที่กำหนดและตัวยึดตำแหน่งที่ช่วยให้เราสามารถจับคู่และจัดการสตริงหรือสตริงย่อยที่เป็นไปตามรูปแบบเฉพาะได้
โปรดจำไว้ว่ากลไกฐานข้อมูลแต่ละตัวอาจใช้ไวยากรณ์และฟังก์ชันการทำงานของฟังก์ชันเล็กน้อย
อย่างไรก็ตาม เราสามารถแสดงไวยากรณ์ได้ดังนี้:
REGEXP_REPLACE (input_string, รูปแบบ, การแทนที่ [, ธง])
พารามิเตอร์ฟังก์ชันจะแสดงดังต่อไปนี้:
- input_string - เป็นการระบุสตริงที่เราต้องการค้นหาและแทนที่
- รูปแบบ – นี่เป็นการระบุรูปแบบนิพจน์ทั่วไปที่เราต้องการจับคู่ภายในสตริงอินพุต
- การแทนที่ - เป็นการระบุสตริงที่จะแทนที่สตริงย่อยที่ตรงกัน
- แฟล็ก – นี่คือชุดของแฟล็กเสริมที่สามารถช่วยปรับเปลี่ยนฟังก์ชันการทำงานของนิพจน์ทั่วไปได้ ตัวอย่างเช่น เราสามารถเปิดใช้งานการค้นหาทั่วโลก การจับคู่แบบคำนึงถึงขนาดตัวพิมพ์ ฯลฯ คุณลักษณะนี้จะแตกต่างกันไปขึ้นอยู่กับกลไกฐานข้อมูล
ตัวอย่าง:
เพื่อให้เข้าใจวิธีการทำงานของฟังก์ชันนี้ได้ดีขึ้น เรามาดูตัวอย่างวิธีใช้งานกัน
ตัวอย่างที่ 1: การใช้งานพื้นฐาน
สมมติว่าเรามีตารางที่มีข้อมูลพนักงานดังที่แสดงในตัวอย่างผลลัพธ์ต่อไปนี้:
พิจารณากรณีที่เราต้องการแทนที่การเกิดขึ้นของสตริง 'Charlie' เป็น 'Matthew' เราสามารถใช้แบบสอบถามได้ดังนี้:
เลือกREGEXP_REPLACE(first_name, 'Charlie', 'Matthew') AS new_name
จาก
พนักงาน;
ตัวอย่างที่ให้มาสาธิตการค้นหาขั้นพื้นฐานและแทนที่เพื่อค้นหาสตริง “Charlie” จากคอลัมน์ “first_name” และแทนที่ด้วย “Matthew”
เอาท์พุท:
ตัวอย่างที่ 2: การแทนที่โดยไม่คำนึงถึงขนาดตัวพิมพ์
ในบางกรณี คุณอาจต้องการดำเนินการค้นหาโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งหมายความว่าฟังก์ชันจะดูเฉพาะเนื้อหาสตริงเท่านั้น ไม่ใช่ตัวพิมพ์เล็กและใหญ่ที่แท้จริงของตัวอักษรและตัวเลข
ในกรณีเช่นนี้ เราใช้ “i” เป็นแฟล็กฟังก์ชันดังนี้:
SELECT REGEXP_REPLACE(product_description, Samsung, Apple, 'i') ตามที่แก้ไขจากผลิตภัณฑ์
เมื่อตั้งค่าสถานะเป็น 'i' ฟังก์ชันจะจับคู่คำทั้งหมดที่ตรงกับ 'Samsung' โดยไม่คำนึงถึงตัวพิมพ์
บทสรุป
ในตัวอย่างนี้ เราได้ศึกษาวิธีใช้และทำงานกับฟังก์ชัน REGEXP_REPLACE() เพื่อทำการค้นหาและแทนที่ตามรูปแบบนิพจน์ทั่วไป