การจับคู่รูปแบบและการแยกข้อความ

เสร็จสมบูรณ์เมื่อ

SQL Server 2025 เพิ่มฟังก์ชันนิพจน์ทั่วไป (REGEXP) ใหม่และปรับปรุง SUBSTRING ฟังก์ชันเพื่อลดความซับซ้อนในการทํางานกับข้อความที่มีโครงสร้าง การเพิ่มเหล่านี้ช่วยให้นักพัฒนาสามารถค้นหาข้อความที่ยืดหยุ่น แยกรูปแบบที่ซับซ้อน และล้างหรือแปลงข้อมูลได้โดยตรงใน T-SQL โดยไม่ต้องพึ่งพาการเขียนสคริปต์ฝั่งไคลเอ็นต์หรือฟังก์ชัน CLR

ภาพรวมของฟังก์ชันการจับคู่รูปแบบและการแยกข้อความ

ตระกูลฟังก์ชัน REGEXP ใหม่สนับสนุนการประเมินนิพจน์ทั่วไปโดยตรงภายใน SQL Server แต่ละฟังก์ชันช่วยให้สามารถดําเนินการข้อความตามรูปแบบเฉพาะได้

REGEXP_LIKE

ตรวจสอบว่าสตริงตรงกับรูปแบบนิพจน์ทั่วไปหรือไม่ ส่งกลับ 1 ถ้าตรงกัน 0 มิฉะนั้น

REGEXP_SUBSTR

แยกสตริงย่อยแรกที่ตรงกับรูปแบบนิพจน์ทั่วไป มีประโยชน์สําหรับการดึงข้อมูลเฉพาะ เช่น หมายเลขโทรศัพท์ วันที่ หรือที่อยู่อีเมล

REGEXP_REPLACE

ค้นหาสตริงสําหรับรูปแบบและแทนที่การเกิดขึ้นทั้งหมดที่ตรงกับรูปแบบ สามารถใช้สําหรับการล้างข้อมูลและการจัดรูปแบบ

REGEXP_INSTR

ส่งกลับตําแหน่งเริ่มต้นของสตริงย่อยแรกที่ตรงกับรูปแบบภายในข้อความที่กําหนด เหมาะอย่างยิ่งสําหรับการค้นหาเครื่องหมายหลักในข้อความที่มีโครงสร้าง

REGEXP_COUNT

นับจํานวนการจับคู่ของรูปแบบนิพจน์ทั่วไปในสตริงที่กําหนด การนับนี้มีประโยชน์เมื่อคุณต้องการวัดความถี่ของรูปแบบ เช่น การนับตัวเลข คํา หรือสัญลักษณ์ในข้อความ

REGEXP_MATCHES

ส่งกลับสตริงย่อยทั้งหมดที่ตรงกับรูปแบบนิพจน์ทั่วไปเป็นผลลัพธ์ของตาราง ใช้เมื่อคุณต้องการการจับภาพหลายรายการจากสตริงเดียวแทนที่จะเป็นเฉพาะการจับคู่แรก

REGEXP_SPLIT_TO_TABLE

แยกสตริงออกเป็นหลายแถวโดยใช้ตัวคั่นนิพจน์ทั่วไป

การปรับปรุง SUBSTRING

ขณะนี้ฟังก์ชันนี้ SUBSTRING รองรับพารามิเตอร์ความยาวเสริม เมื่อละเว้น ระบบจะแยกจากตําแหน่งเริ่มต้นที่ระบุไปยังจุดสิ้นสุดของสตริงโดยอัตโนมัติ ซึ่งช่วยลดความจําเป็นในการคํานวณ LEN() ด้วยตนเอง

ความสามารถเหล่านี้ช่วยให้คุณสามารถค้นหา แยก และจัดการรูปแบบข้อความได้โดยตรงใน SQL Server 2025 ด้วย T-SQL ที่กระชับและอ่านได้


สถานการณ์ตัวอย่าง: การแยกและล้างข้อมูลผู้ติดต่อ

ทีมการตลาดจะเก็บรักษาฐานข้อมูลของข้อความของลูกค้าในคอลัมน์ที่ชื่อMessageText หลายรายการมีหมายเลขโทรศัพท์ในรูปแบบต่างๆ คุณต้องแยกหมายเลขโทรศัพท์แรกจากแต่ละข้อความ ทําให้เป็นมาตรฐานเป็นรูปแบบมาตรฐาน และระบุข้อความที่มีหมายเลขโทรศัพท์ที่ไม่ถูกต้อง

ข้อมูลตัวอย่าง

สมมติว่าคุณมีข้อมูลตัวอย่างต่อไปนี้ในตารางที่เรียกว่า CustomerMessages:

รหัสข้อความ ข้อความข้อความ
1 "โทรหาฉันที่ (713) 555-1298 หรือสํานักงาน 555-8811"
2 "ติดต่อฉัน: +1-832-555-7821 ขอบคุณ!"
3 "หมายเลขของฉันคือ 713-555-9876 ต่อ 33"
4 "ยังไม่มีโทรศัพท์อยู่ในรายการ"

แบบสอบถาม: ระบุ แยก และสร้างมาตรฐาน

-- Extract the first phone number pattern and format it consistently
SELECT MessageID,
       REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') AS RawNumber,
       REGEXP_REPLACE(
           REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}'),
           '\D', ''
       ) AS DigitsOnly,
       CASE 
           WHEN REGEXP_LIKE(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') = 1 THEN 'Valid'
           ELSE 'Missing'
       END AS PhoneStatus
FROM dbo.CustomerMessages;

ผลลัพธ์

รหัสข้อความ เลขดิบ ตัวเลขเท่านั้น สถานะโทรศัพท์
1 (713) 555-1298 7135551298 ถูกต้อง
2 +1-832-555-7821 18325557821 ถูกต้อง
3 713-555-9876 7135559876 ถูกต้อง
4 โมฆะ โมฆะ ขาด

ตัวอย่างนี้ใช้เพื่อ REGEXP_SUBSTR แยกรูปแบบ REGEXP_REPLACE การจับคู่แรก เพื่อตัดอักขระที่ไม่ใช่ตัวเลข และ REGEXP_LIKE เพื่อตรวจสอบตัวเลขที่ถูกต้อง การสืบค้นจะกําหนดมาตรฐานหมายเลขโทรศัพท์ให้เป็นรูปแบบตัวเลขที่สอดคล้องกันโดยตรงใน T-SQL


ตัวอย่างที่ 2: การแยกข้อมูลด้วย REGEXP_SPLIT_TO_TABLE และ SUBSTRING

สมมติว่าตาราง CustomerFeedbackอื่น , เก็บแท็กที่คั่นด้วยจุลภาคที่อธิบายความสนใจของลูกค้า คุณต้องการแยกออกเป็นแต่ละแถวและแยกคําหลักแรกเพื่อการจัดทําดัชนีอย่างรวดเร็ว

SELECT FeedbackID,
       value AS Tag,
       SUBSTRING(value, 1) AS FirstWord
FROM CustomerFeedback
CROSS APPLY REGEXP_SPLIT_TO_TABLE(Tags, '\s*,\s*');

คิวรีนี้จะแบ่งสตริงที่คั่นด้วยจุลภาคแต่ละสตริงออกเป็นแถวในขณะที่ใช้ลักษณะการทํางานใหม่ SUBSTRING (โดยไม่ระบุความยาว) เพื่อแยกข้อความที่เหลือทั้งหมดจากตําแหน่งเริ่มต้น

ผลลัพธ์

รหัสคําติชม แท็ก คําแรก
1 เดินทาง เดินทาง
1 การถ่ายภาพ การถ่ายภาพ
2 ปีน เขา ปีน เขา
2 แคมป์ ปิ้ง แคมป์ ปิ้ง

Summary

ฟังก์ชัน REGEXP ใหม่และฟังก์ชัน SUBSTRING ที่ได้รับการปรับปรุงใน SQL Server 2025 มอบความสามารถในการจับคู่รูปแบบดั้งเดิมและการแยกข้อความ การเพิ่มเหล่านี้ช่วยลดความจําเป็นในการประมวลผลสตริงภายนอก ทําให้ง่ายต่อการล้าง แยกวิเคราะห์ และวิเคราะห์ข้อมูลข้อความภายในกลไกฐานข้อมูล นักพัฒนาสามารถลดความซับซ้อนของไปป์ไลน์ ETL ปรับปรุงคุณภาพข้อมูล และเปิดใช้งานการวิเคราะห์ที่ขับเคลื่อนด้วยข้อความขั้นสูงใน T-SQL ได้โดยตรง