Đối sánh mẫu

Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Miriam Antona

Software Engineer

Đối sánh mẫu - Giới thiệu

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   | ... |
| ... | ...             | ...            | ... |
  • Số hợp lệ: ###-###-####
    • chữ số thứ nhất và thứ tư từ 2 đến 9
    • các chữ số còn lại từ 0 đến 9
  • Số không hợp lệ: 555-156-8845
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - Giới thiệu

  • SQL Server không cung cấp đầy đủ bộ biểu thức chính quy.
  • SQL Server có thể đối sánh mẫu bằng LIKE.
  • Muốn có đầy đủ regex -> tạo và cài đặt tiện ích mở rộng.
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - LIKE

  • Xác định chuỗi có khớp mẫu chỉ định hay không
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - LIKE

  • Xác định chuỗi có khớp mẫu chỉ định hay không
Ký tự đại diện Mô tả Ví dụ
% Bất kỳ chuỗi ký tự nào, kể cả rỗng WHERE contact_number LIKE '555-%'
_ (gạch dưới) Bất kỳ một ký tự đơn WHERE contact_number LIKE '___-___-____'
[] Bất kỳ một ký tự trong khoảng hoặc tập chỉ định WHERE contact_number LIKE '[2-9][0-9][0-9]-[2-9][0-9][0-9]-[0-9][0-9][0-9][0-9]
[^] Bất kỳ một ký tự không thuộc khoảng hoặc tập chỉ định WHERE contact_number LIKE '[^2-9]'
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - ví dụ với %

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   |
| ...             | ...            |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - ví dụ với %

SELECT 
    name, 
    contact_number
FROM series
WHERE contact_number NOT LIKE '555%'
| name            | contact_number |
|-----------------|----------------|
| The Good Doctor | 000-930-1274   |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - ví dụ với [] (ngoặc vuông)

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   |
| ...            | ...            |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Đối sánh mẫu - ví dụ với [] (ngoặc vuông)

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   |
Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Ayo berlatih!

Làm sạch dữ liệu trong cơ sở dữ liệu SQL Server

Preparing Video For Download...