การจับคู่รูปแบบและการแยกข้อความ
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 ได้โดยตรง