Cách sử dụng ký tự đại diện (Wildcard) và các toán tử lọc trong SQL Excel

Ngày tạo 18/04/2022

 -  2.530 Lượt xem

Hướng dẫn sử dụng ký tự đại diện (Wildcard: %, _, []) kết hợp toán tử LIKE, BETWEEN, IN và NOT trong SQL Excel (ADODB) để lọc dữ liệu văn bản gần đúng và truy vấn mã vật tư, khách hàng linh hoạt.

1 Wildcard

1.1Wildcard là gì

Wildcard hay còn gọi là “toán tử đại diện” là một số kí tự đặc biệt được quy ước để thay thế các chữ, số. Wildcard thường được sử dụng trong các câu lệnh điều kiện, trong các phép so sánh, tìm kiếm.

1.2Một số Wildcard trong SQL

Kí tự

Chức năng

Ví dụ

‘*’

Dùng trong câu lệnh Select, có chức năng chọn tất cả các cột trong bảng.

Select * from [table_X$]

‘%’

Dùng trong câu lệnh Where để thay thế chuỗi kí tự bất kì không giới hạn độ dài.

Select * from [table_X$] where f_nameA like ‘A%’

Lấy tất cả các cột trong bảng A với điều kiện cột f_nameA có giá trị bắt đầu là kí tự A và không quan tâm đến độ dài phía sau.

‘_’

Dùng trong câu lệnh Where để thay thế duy nhất 1 kí tự bất kì.

Select * from [table_X$] where f_nameA like ‘A%’

Lấy tất cả các cột trong bảng A với điều kiện cột f_nameA có giá trị bắt đầu là kí tự A và sau đó chỉ có duy nhất một kí tự bất kỳ

‘[…]’

Dùng trong câu lệnh Where, thay thế 01 ký tự đơn nhất trong dấu ngoặc vuông

Select * from [table_X$] where f_nameA like ‘A[AB]’

Lấy tất cả các cột trong bảng A với điều kiện cột f_nameA có giá trị bắt đầu là A kí tự thứ 2 chỉ có thể là A hoặc B.

‘-‘

Dùng trong câu lệnh Where để thay thế một khoảng kí tự có thứ tự.

Select * from [table_X$] where f_nameA like ‘A[1-3]’

Lấy tất cả các cột trong bảng A với điều kiện cột f_nameA có giá trị bắt đầu là A kí tự thứ 2 là các kí tự trong khoảng từ 1 đến 3(1,2,3)

‘!’

Dùng trong câu lệnh Where để thay thế duy nhất một kí tự không có trong dấu ngoặc vuông []

Select * from [table_X$] where f_nameA like ‘A[!BC]’ Lấy tất cả các cột trong bảng A với điều kiện cột f_nameA có giá trị bắt đầu là A kí tự thứ 2 là các kí tự khác B và C.

2.Toán tử

2.1.Toán tử là gì?

Toán tử là các phép tính hoặc các phép logic dung để thể hiện mối quan hệ giữa các đối tượng với nhau. Thường sẽ là các phép toán hoặc các phép logic.

2.2.Các toán tử cơ bản SQL

Toán tử so sánh: là các toán tử dungf trong phép so sánh số học (>,<,=,>=,<=,…)

Toán tử Logic: là các toán tử dùng trong các mệnh đề, có kết quả trả về là True(1) hoặc False(0)

Một số toán tử logic trong SQL:

Toán tử

Chức năng

Ví dụ

AND

Dùng để nối 2 hay nhiều điều kiện với nhau.

Kết quả trả về:

True (1): khi tất cả các điều kiện trên đều đúng

False (0): khi 1 trong các điều kiện trên là sai

Select * Select * from [table_X$] where f_nameA like ‘AB’ AND f_nameB like ‘AC’

 Lấy tất cả các cột từ bảng table_X với điều kiện cột f_nameA là ‘AB’ và f_nameB là ‘AC’.

OR

Dùng để nối 2 hay nhiều điều kiện với nhau.

Kết quả trả về:

True (1): 1 trong các điều kiện trên đúng

False (0): khi tất cả các điều kiện trên là sai

Select * Select * from [table_X$] where f_nameA like ‘AB’ AND f_nameB like ‘AC’

Lấy tất cả các cột từ bảng table_X với điều kiện cột f_nameA là ‘AB’hoặc f_nameB là ‘AC’.

LIKE

Dùng để so sánh các chuỗi với nhau.

Select * Select * from [table_X$] where f_nameA like ‘AB’

Lấy tất cả các cột từ bảng table_X với điều kiện cột f_nameA là ‘AB’

 

IS NULL/IS NOT NULL

Dùng để kiểm tra ô có hay không có dữ liệu

Select * Select * from [table_X$] where f_nameA IS NOT NULL

Lấy tất cả các cột từ bảng table_X với điều kiện cột f_nameA không được bỏ trống

 

BETWEEN AND

Dùng cho dữ liệu là ngày hoặc số

Select * from [table_X$] where Date between #3/1/2022# and #14/2/2022#

Lấy tất cả các cột trong bảng table_X với điều kiện cột Date có thời gian từ 3/1/2022 đến 12/2/2022

 

Lưu ý:

Ngày tháng phải nằm trong cặp dấu ##. #13/3/2022#

Chuỗi phải nằm trong cặp ngoặc đơn. ‘ERX’

Dưới đây là link download data để các bạn có thể thực hành trong suốt chuỗi bài SQL in Excel của ERX.

 

 

Mẹo Tối ưu Truy vấn SQL trong Excel VBA & Xử lý Lỗi Thường gặp

Khi triển khai câu lệnh truy vấn SQL thông qua kết nối ADODB.Connection trên nền tảng Microsoft Excel, bạn cần lưu ý 3 quy tắc vàng sau để đảm bảo tốc độ và độ chính xác tuyệt đối:

CHUỖI KẾT NỐI & CÚ PHÁP CHUẨNMicrosoft ACE OLEDB 12.0
'' Chuỗi kết nối chuẩn hỗ trợ cả cột trộn kiểu dữ liệu Số và Văn bản (IMEX=1):
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & _
        ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"

'' Quy tắc bọc tên Sheet và tên Cột có khoảng trắng hoặc tiếng Việt:
strSQL = "SELECT [Mã Hàng], [Tên Sản Phẩm], SUM([Thành Tiền]) AS TongTien " & _
         "FROM [Data_BanHang$A1:G50000] " & _
         "WHERE [Thành Tiền] IS NOT NULL " & _
         "GROUP BY [Mã Hàng], [Tên Sản Phẩm]"
  • Luôn thêm tham số IMEX=1: Giúp trình điều khiển OLEDB không tự ý biến các mã hàng vừa có số vừa có chữ thành giá trị Null.
  • Giới hạn vùng dữ liệu khi Sheet có định dạng thừa: Thay vì gọi [Sheet1$], bạn có thể chỉ định rõ [Sheet1$A1:Z50000] để bỏ qua các dòng rác cuối bảng.
  • Đóng kết nối sau khi CopyFromRecordset: Luôn gọi rs.Close và cn.Close để giải phóng bộ nhớ RAM và tránh khóa file nguồn.
Web Admin

 
 
Gọi (028) 3514 2046