Tìm hiểu SQL CONTAINS
SQL CONTAINS được dùng cho tìm kiếm toàn văn, cho phép bạn truy vấn cơ sở dữ liệu để tìm các từ, cụm từ hoặc mẫu cụ thể trong dữ liệu văn bản. Nó đặc biệt hữu ích khi tìm thông tin trong các trường văn bản lớn, nơi vị trí chính xác của dữ liệu không được biết trước.
Cú pháp và Tham số
Cú pháp cơ bản cho SQL CONTAINS như sau:
CONTAINS (column_name, 'search_pattern')
Các thành phần chính bao gồm:
- Tên cột: Trường sẽ được tìm kiếm. Cột này phải được lập chỉ mục toàn văn.
- Mẫu tìm kiếm: Văn bản bạn muốn tìm trong cột, đặt trong dấu nháy đơn.
Toán tử và Ký tự đại diện
Để tinh chỉnh tìm kiếm, SQL CONTAINS hỗ trợ nhiều toán tử:
AND&OR: Dùng để kết hợp nhiều thuật ngữ tìm kiếm.NEAR: Tìm các từ xuất hiện gần nhau trong một khoảng nhất định.- Dấu hoa thị (
*): Hoạt động như ký tự đại diện để tìm kiếm khi từ chính xác có thể là một phần của chuỗi dài hơn.
Triển khai SQL CONTAINS
Hãy khám phá cách áp dụng SQL CONTAINS với các ví dụ thực tế:
Cách dùng cơ bản
Để tìm các thuật ngữ "apple" và "orange" trong một cột tên "fruit", bạn có thể dùng:
CONTAINS (fruit, '"apple" AND "orange"')
Truy vấn này trả về các hàng nơi cả hai thuật ngữ đều xuất hiện trong cột "fruit".
Tìm kiếm nâng cao
Với các tìm kiếm phức tạp hơn, kết hợp CONTAINS với các hàm SQL khác cho phép truy vấn tinh vi, như tìm các cụm từ gần nhau hoặc dùng ký tự đại diện để tìm các biến thể của một từ.
Tìm kiếm nâng cao có thể bao gồm việc kết hợp CONTAINS với các toán tử logic, dùng tìm kiếm theo độ gần, và tận dụng ký tự đại diện để phát hiện mẫu hoặc điểm dữ liệu cụ thể trong các trường văn bản.
Kết hợp CONTAINS với Toán tử Logic
SQL CONTAINS hỗ trợ các toán tử logic như AND, OR và NOT để tinh chỉnh tìm kiếm theo nhiều tiêu chí. Ví dụ, để tìm các bản ghi chứa cả "technology" và "innovation" trong một cột văn bản, bạn có thể cấu trúc truy vấn như sau:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '"technology" AND "innovation"'
);
Ngược lại, để tìm các bản ghi chứa một trong hai thuật ngữ, bạn sẽ dùng OR:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '"technology" OR "innovation"'
);
Tìm kiếm theo độ gần
Toán tử NEAR đặc biệt hữu ích để tìm các từ hoặc cụm từ xuất hiện gần nhau trong văn bản. Khả năng này vô cùng giá trị trong bối cảnh mối quan hệ giữa các thuật ngữ ảnh hưởng đến ý nghĩa của chúng. Ví dụ, để tìm "climate" gần "change" trong phạm vi 10 từ:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, 'NEAR((climate, change), 10)'
);
Truy vấn này ưu tiên các bản ghi nơi "climate" và "change" có liên hệ chặt chẽ, mang lại kết quả phù hợp hơn cho các câu hỏi nghiên cứu cụ thể.
Tìm kiếm với ký tự đại diện
Ký tự đại diện mở rộng phạm vi tìm kiếm bằng cách cho phép bao gồm các ký tự biến đổi. Dấu hoa thị (*) đóng vai trò ký tự đại diện trong truy vấn CONTAINS, cho phép tìm kiếm khớp một phần. Chẳng hạn, để tìm các biến thể của "compute" như "computer", "computing" hoặc "computation", bạn có thể dùng:
SELECT
*
FROM
your_table
WHERE
CONTAINS(your_column, '"compute*"');
Cách tiếp cận này đặc biệt hữu ích khi bạn muốn bao quát một tập dữ liệu rộng liên quan đến một gốc từ hoặc khi bạn không chắc về các thuật ngữ chính xác được dùng trong cơ sở dữ liệu.
So khớp mẫu nâng cao
Trong các tình huống cần so khớp mẫu tinh vi hơn, hãy cân nhắc kết hợp SQL CONTAINS với toán tử LIKE hoặc biểu thức chính quy. Trong khi CONTAINS vượt trội ở tìm kiếm toàn văn, LIKE và regex có thể mang lại sự linh hoạt về mẫu, chẳng hạn khớp các chuỗi ký tự hoặc định dạng cụ thể (ví dụ: địa chỉ email hoặc số điện thoại).
Ví dụ thực tế: Kết hợp kỹ thuật cho tìm kiếm toàn diện
Giả sử bạn cần tìm các bản ghi trong cơ sở dữ liệu liên quan đến công nghệ môi trường, nhưng không chắc các cụm từ chính xác được dùng trong văn bản. Bạn có thể kết hợp nhiều kỹ thuật như sau:
SELECT
*
FROM
your_table
WHERE
CONTAINS(
your_column, '("environment*" NEAR "technology*", 10) OR "climate change" OR "renewable energy"'
)
AND your_column LIKE '%sustainability%';
Truy vấn này minh họa cách dùng CONTAINS cho tìm kiếm theo độ gần và ký tự đại diện, đồng thời kết hợp toán tử LIKE để so khớp mẫu bổ sung, mang đến chiến lược vững chắc cho các tìm kiếm văn bản phức tạp.
Ví dụ thực tế về SQL CONTAINS trong Khoa học Dữ liệu
Là một nhà khoa học dữ liệu, tôi làm việc với nhiều loại bộ dữ liệu, chủ yếu là dữ liệu văn bản về mức độ hài lòng và phản hồi của khách hàng. Trong ví dụ này, chúng ta sẽ tìm các từ khóa cụ thể có thể chỉ ra sự hài lòng hoặc không hài lòng trong phản hồi của khách hàng.
|
ID |
FeedbackText |
SatisfactionScore |
|
1 |
Tôi rất hài lòng với dịch vụ. |
5 |
|
2 |
Không hài lòng với chất lượng sản phẩm. |
2 |
|
3 |
Giao hàng nhanh và sản phẩm hoạt động rất tốt... |
5 |
|
4 |
Dịch vụ khách hàng không hữu ích và thô lỗ. |
1 |
|
5 |
Hài lòng với lần mua của tôi. Sẽ giới thiệu! |
4 |
Bảng CustomerFeedback
Để dùng CONTAINS, cơ sở dữ liệu của bạn có thể cần bật Tìm kiếm Toàn văn (Full-Text Search).
Từ khóa CONTAINS được dùng để tìm các bản ghi nơi cột “FeedbackText” chứa từ “happy”.
SELECT
*
FROM
CustomerFeedback
WHERE
CONTAINS(FeedbackText, 'happy');
Truy vấn trên sẽ trả về các hàng trong CustomerFeedback nơi cột FeedbackText chứa từ “happy”.
|
ID |
FeedbackText |
SatisfactionScore |
|
1 |
Tôi rất hài lòng với dịch vụ. |
5 |
|
3 |
Giao hàng nhanh và sản phẩm hoạt động rất tốt... |
5 |
|
5 |
Hài lòng với lần mua của tôi. Sẽ giới thiệu! |
4 |
Bạn không thể dùng lệnh CONTAINS trong cơ sở dữ liệu SQLite. Thay vào đó, hãy thử dùng:
SELECT
*
FROM
CustomerFeedback
WHERE
FeedbackText LIKE '%happy%';
Vượt ra ngoài CONTAINS: So khớp mẫu và thao tác chuỗi
Mặc dù CONTAINS rất mạnh cho tìm kiếm văn bản, SQL cũng cung cấp các kỹ thuật khác để làm việc với dữ liệu văn bản:
Toán tử LIKE
Tương tự CONTAINS, toán tử LIKE cho phép so khớp mẫu nhưng với cú pháp đơn giản hơn, dùng % làm ký tự đại diện. Ví dụ, để tìm bất kỳ tên sản phẩm nào chứa "apple":
SELECT
*
FROM
Products
WHERE
productName LIKE '%apple%'
Hàm chuỗi nâng cao
SQL cung cấp các hàm như LEFT và REVERSE để trích xuất hoặc thao tác một phần chuỗi văn bản, mang lại khả năng phong phú cho phân tích và xử lý văn bản. Bạn có thể tìm hiểu thêm trong khóa học Cleaning Data in SQL Server Databases của chúng tôi.
Kết luận
Hàm SQL CONTAINS và các khả năng thao tác văn bản liên quan là những công cụ thiết yếu cho người làm dữ liệu. Bằng cách hiểu và áp dụng các kỹ thuật này, bạn có thể tìm kiếm và phân tích hiệu quả dữ liệu văn bản trong cơ sở dữ liệu, khai mở insight và nâng cao dự án phân tích dữ liệu của mình.
Hãy nhớ rằng hiệu quả của truy vấn không chỉ phụ thuộc vào việc nắm vững cú pháp mà còn ở hiểu biết về bối cảnh và cấu trúc dữ liệu của bạn. Hãy luyện tập với các bộ dữ liệu thực tế và các dự án SQL, đồng thời khám phá nhiều hàm khác nhau để tận dụng tối đa sức mạnh của SQL trong phân tích dữ liệu văn bản.
Để tìm hiểu thêm về các toán tử SQL và khám phá những điều cơ bản về SQL, hãy xem SQL Basics Cheat Sheet và lộ trình kỹ năng SQL Fundamentals của chúng tôi.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.

Khả năng tìm kiếm và xử lý dữ liệu văn bản là không thể thiếu đối với các nhà khoa học dữ liệu hoặc kỹ sư dữ liệu. Hàm CONTAINS của SQL là một công cụ mạnh mẽ để thực hiện các tìm kiếm văn bản tinh vi trong cơ sở dữ liệu, cho phép bạn truy xuất dữ liệu dựa trên các mẫu hoặc từ khóa cụ thể.
Hướng dẫn này sẽ giúp bạn sử dụng hiệu quả SQL
CONTAINS, đảm bảo bạn có thể khai thác tối đa tiềm năng của nó cho nhu cầu phân tích dữ liệu.