การจับคู่รูปแบบ

การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

Miriam Antona

Software Engineer

การจับคู่รูปแบบ - บทนำ

SELECT * FROM series
| id  | name            | contact_number | ... |
|-----|-----------------|----------------|-----|
| 1   | Adventure Time  | 555-906-8845   | ... |
| 2   | Dexter          | 555-156-8845   | ... |
| 3   | Futurama        | 555-210-9951   | ... |
| 4   | Game of Thrones | 555-543-6641   | ... |
| ... | ...             | ...            | ... |
  • เบอร์ที่ถูกต้อง: ###-###-####
    • ตัวเลขตัวแรกและตัวที่สี่อยู่ระหว่าง 2 ถึง 9
    • ตัวที่เหลืออยู่ระหว่าง 0 ถึง 9
  • เบอร์ที่ไม่ถูกต้อง: 555-156-8845
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - บทนำ

  • SQL Server ไม่รองรับ regular expressions แบบเต็มรูปแบบ
  • SQL Server จับคู่รูปแบบได้ด้วย LIKE
  • หากต้องการใช้ regular expressions แบบเต็มรูปแบบ → ต้องสร้างและติดตั้ง extension เพิ่มเติม
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - LIKE

  • ใช้ตรวจสอบว่าสตริงตรงกับรูปแบบที่กำหนดหรือไม่
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - LIKE

  • ใช้ตรวจสอบว่าสตริงตรงกับรูปแบบที่กำหนดหรือไม่
อักขระ Wildcard คำอธิบาย ตัวอย่าง
% สตริงใดก็ได้ที่มีศูนย์อักขระขึ้นไป WHERE contact_number LIKE '555-%'
- (underscore) อักขระเดี่ยวใดก็ได้ WHERE contact_number LIKE '___-___-____'
[] อักขระเดี่ยวใดก็ได้ในช่วงหรือชุดที่กำหนด WHERE contact_number LIKE '[2-9][0-9][0-9]-[2-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
[^] อักขระเดี่ยวใดก็ได้ที่ไม่อยู่ในช่วงหรือชุดที่กำหนด WHERE contact_number LIKE '[^2-9]'
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - ตัวอย่างการใช้ %

SELECT name, contact_number
FROM series
WHERE contact_number LIKE '555%'
| name            | contact_number |
|-----------------|----------------|
| Adventure Time  | 555-906-8845   |
| Dexter          | 555-156-8845   |
| Futurama        | 555-210-9951   |
| Game of Thrones | 555-abc-6641   |
| ...             | ...            |
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - ตัวอย่างการใช้ %

SELECT 
    name, 
    contact_number
FROM series
WHERE contact_number NOT LIKE '555%'
| name            | contact_number |
|-----------------|----------------|
| The Good Doctor | 000-930-1274   |
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - ตัวอย่างการใช้ [] (วงเล็บก้ามปู)

SELECT 
    name, 
    contact_number
FROM series
WHERE contact_number LIKE '[2-9][0-9][0-9]-[2-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'
| name           | contact_number |
|----------------|----------------|
| Adventure Time | 555-906-8845   |
| Futurama       | 555-210-9951   |
| Homeland       | 555-985-6314   |
| Westworld      | 555-456-1234   |
| ...            | ...            |
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

การจับคู่รูปแบบ - ตัวอย่างการใช้ [] (วงเล็บก้ามปู)

SELECT 
    name, 
    contact_number
FROM series
WHERE contact_number NOT LIKE '[2-9][0-9][0-9]-[2-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'
| name            | contact_number |
|-----------------|----------------|
| Dexter          | 555-156-8845   |
| Game of Thrones | 555-abc-6641   |
| The Good Doctor | 000-930-1274   |
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

มาฝึกกันเถอะ!

การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server

Preparing Video For Download...