SQL REGEXP_REPLACE

Sql Regexp Replace



ข้อมูลข้อความหรือสตริงตามที่นักพัฒนาเรียกกันว่าเป็นองค์ประกอบหลักสำหรับโปรแกรมการทำงานใดๆ ก็ไม่ต่างอะไรกับการจัดเก็บข้อมูล ฐานข้อมูลเกือบทั้งหมดมีข้อมูลข้อความบางรูปแบบ เช่น ชื่อ บันทึก ฯลฯ

ดังนั้นการจัดการสตริงจึงเป็นงานทั่วไปที่เกี่ยวข้องกับการจัดการและการแปลงค่าสตริงให้อยู่ในรูปแบบเฉพาะ

หนึ่งในฟังก์ชันที่ทรงพลังที่สุดใน SQL ที่เกี่ยวข้องกับการดำเนินการสตริงคือฟังก์ชัน REGEXP_REPLACE() ฟังก์ชันนี้ช่วยให้เราทำการค้นหาและแทนที่ด้วยนิพจน์ทั่วไปได้ หากคุณคุ้นเคยกับนิพจน์ทั่วไป คุณจะรู้ว่าฟังก์ชันนี้มีประสิทธิภาพเพียงใด







ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ฟังก์ชันนี้เพื่อค้นหาและแทนที่สตริงในฐานข้อมูล SQL



SQL REGEXP_REPLACE

SQL REGEXP_REPLACE() เป็นฟังก์ชันที่ช่วยให้เราทำการจับคู่และแทนที่รูปแบบตามนิพจน์ทั่วไปภายในสตริงที่กำหนด



นิพจน์ทั่วไปหรือ regex คือรูปแบบที่กำหนดและตัวยึดตำแหน่งที่ช่วยให้เราสามารถจับคู่และจัดการสตริงหรือสตริงย่อยที่เป็นไปตามรูปแบบเฉพาะได้





โปรดจำไว้ว่ากลไกฐานข้อมูลแต่ละตัวอาจใช้ไวยากรณ์และฟังก์ชันการทำงานของฟังก์ชันเล็กน้อย

อย่างไรก็ตาม เราสามารถแสดงไวยากรณ์ได้ดังนี้:



REGEXP_REPLACE (input_string, รูปแบบ, การแทนที่ [, ธง])

พารามิเตอร์ฟังก์ชันจะแสดงดังต่อไปนี้:

  1. input_string - เป็นการระบุสตริงที่เราต้องการค้นหาและแทนที่
  2. รูปแบบ – นี่เป็นการระบุรูปแบบนิพจน์ทั่วไปที่เราต้องการจับคู่ภายในสตริงอินพุต
  3. การแทนที่ - เป็นการระบุสตริงที่จะแทนที่สตริงย่อยที่ตรงกัน
  4. แฟล็ก – นี่คือชุดของแฟล็กเสริมที่สามารถช่วยปรับเปลี่ยนฟังก์ชันการทำงานของนิพจน์ทั่วไปได้ ตัวอย่างเช่น เราสามารถเปิดใช้งานการค้นหาทั่วโลก การจับคู่แบบคำนึงถึงขนาดตัวพิมพ์ ฯลฯ คุณลักษณะนี้จะแตกต่างกันไปขึ้นอยู่กับกลไกฐานข้อมูล

ตัวอย่าง:

เพื่อให้เข้าใจวิธีการทำงานของฟังก์ชันนี้ได้ดีขึ้น เรามาดูตัวอย่างวิธีใช้งานกัน

ตัวอย่างที่ 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() เพื่อทำการค้นหาและแทนที่ตามรูปแบบนิพจน์ทั่วไป