Thứ Hai, 24 tháng 7, 2023

Lệnh LIKE và NOT LIKE trong Oracle

Trong bài này chúng ta sẽ tìm hiểu cách xử lý tìm kiếm dữ liệu gần giống với LIKE trong Oracle, đây là lệnh cho phép bạn so sánh dữ liệu gần giống, rất hữu ích ở một số trường hợp cần xử lý truy vấn tìm kiếm.

Mục lục

  • 1. Lệnh LIKE trong Oracle
  • 2. Lệnh NOT LIKE trong Oracle
  • 3. Ký tự đặc biệt ESCAPE
  • 4. Lời kết

1. Lệnh LIKE trong Oracle

LIKE được dùng ở lệnh WHERE, nó cho phép bạn định dạng dữ liệu so sánh khớp mẫu.

Cú pháp:

1
column_name LIKE ('pattern_string')

Trong đó:

  • column_name là cột bạn muốn tìm kiếm
  • pattern_string là chuỗi so khớp

Bạn có thể sử dụng cú pháp của Regular Expression ở chuỗi so khớp, tuy nhiên thông thường chúng ta chỉ sử dụng hai ký hiệu sau đây với lệnh LIKE.

Ký hiệuGiải thích
%Đại diện cho một dãy các kí tự
_Đại diện cho một kí tự đơn

Ví dụ: Mình có cột fullname, bây giờ mình muốn lấy tên tất cả sinh viên có tên là Cường. Như vậy mình sẽ sử dụng ký hiệu % cho họ và tên lót bởi nó đại diện cho một dãy kí tự.

1
2
3
SELECT *
FROM students
WHERE student_name LIKE ('% Cuong')

Như vậy những ai có tên Cường thì sẽ được chọn, cho dù tên họ và tên lót của họ là gì đi nữa.

Ví dụ: mình muốn lấy danh sách khách hàng có số điện thoại 10 chữ số và bắt đầu bằng 0979. Như vậy còn 6 số sau mình sẽ dùng dấu _ để đại diện cho 6 số còn lại.

1
2
3
SELECT *
FROM phones
WHERE phone_number LIKE ('0979______')

2. Lệnh NOT LIKE trong Oracle

Ngược lại với lệnh LIKE, lệnh NOT LIKE kiểm tra không giống với chuỗi cần so khớp.

Cú pháp:

1
column_name NOT LIKE ('pattern_string')

Trong đó các tham số được giải thích như trên.

Ví dụ: Lấy danh sách sinh viên có tên khác Cường ở bảng students.

1
2
3
SELECT *
FROM students
WHERE student_name NOT LIKE ('% Cuong')

3. Ký tự đặc biệt ESCAPE

Giả sử trong chuỗi so khớp bạn xuất hiện ký tự % hoặc _ thì bạn phải thông báo cho Oracle biết đó là một ký tự bình thường, bằng cách thêm dấu \ đằng trước nó.

Ví dụ: Tìm tất cả bài viết có tiêu đề xuất hiện ký tự %

1
2
3
SELECT  *
FROM posts
WHERE title LIKE "%\%%"

Ví dụ: Tìm tất cả sản phẩm có mã sản phẩm bắt đầu bằng _ và chỉ có hai ký tự.

1
2
3
SELECT  *
FROM products
WHERE id LIKE "\__"

Ký tự mặc định của ESCAPE là \, tuy nhiên bạn có thể thay đổi nó bằng cách khai báo như sau:

Như hai ví dụ trên mình có thể viết lại như sau:

Ví dụ 1
1
2
3
SELECT  *
FROM posts
WHERE title LIKE "%!%%" ESCAPE "!";

Ví dụ 2
1
2
3
SELECT  *
FROM products
WHERE id LIKE "#__" ESCAPE "#"

Ở ví dụ 1 mình dùng dấu !, còn ví dụ 2 mình dùng dấu # để thay thế.

4. Lời kết

Như vậy mình đã giới thiệu xong lệnh LIKE và cách dùng lệnh LIKE để tìm kiếm dữ liệu gần đúng, nghĩa là sự so khớp sẽ dựa vào chuỗi pattern mà bạn định nghĩa.

Lệnh này rất hay và được dùng rất nhiều, tuy nhiên về mặt tối ưu thì dùng nó không được tốt cho lắm, tốc độ xử lý sẽ chậm.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master