Một câu lệnh select trong SQL có thể chứa một hoặc nhiều điều kiện [còn được gọi là vị từ] trong mệnh đề where. Một điều kiện đánh giá đúng hoặc sai hoặc không xác định. Mệnh đề where phải trả về giá trị thực cho một hàng cụ thể được chọn
Mệnh đề SQL tìm nạp bản ghi nhanh chóng khi bạn đưa ra điều kiện chính xác. Các điều kiện phải được lập chỉ mục cột bảng. Và, nhiều lúc, bạn cần lọc các bản ghi bằng các điều kiện tương tự
Đôi khi bạn cần nhiều điều kiện khớp hoặc không khớp. Bài đăng này trình bày cách sử dụng mệnh đề Multiple Like in Where của SQL
Không chỉ THÍCH mà bạn còn có thể sử dụng nhiều điều kiện KHÔNG THÍCH trong SQL. Bạn sẽ nhận được bản ghi các ký tự khớp/không khớp với THÍCH – điều này bạn có thể đạt được bằng ký tự đại diện phân vị [%]
Các trường hợp sử dụng bên dưới, giúp bạn biết cách sử dụng điều kiện like đơn và like nhiều
- Cách sử dụng điều kiện Single LIKE
- Cách sử dụng nhiều Điều kiện THÍCH
- Ví dụ thực tế với nhiều điều kiện THÍCH
- Cách sử dụng nhiều điều kiện NOT LIKE
quảng cáo
Cách sử dụng điều kiện Single Like
Dưới đây là SQL đơn giản để đưa ra điều kiện Like trong mệnh đề Where. Đó là với Like đơn
select column1, column2, column3 where column1 like '05%' from my_table;
Cách đưa ra nhiều điều kiện thích
Ví dụ dưới đây cho biết, cú pháp chung của việc sử dụng nhiều điều kiện giống nhau trong mệnh đề Where
select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;
Ví dụ thực tế với nhiều điều kiện Thích
Ví dụ dưới đây là lấy các bản ghi từ bảng TRAVEL-DET [bảng chi tiết hành trình]
select country_cde, date, name, age where [country_cde like 'BR%' or country_cde like 'US%' or country_cde like 'CA%'] from travel_det;
Trong ví dụ trên, tôi đã lọc các bản ghi khớp với Brazil [BRA], Hợp chủng quốc Hoa Kỳ [USA] và Canada [CAN]
Cách sử dụng nhiều điều kiện NOT LIKE
select country_cde, date, name, age where [country_cde not like 'BR%' or country_cde not like 'US%' or country_cde not like 'CA%'] from travel_det;
Trong ví dụ trên, bạn sẽ nhận được các bản ghi không khớp với Brazil [BRA], Hợp chủng quốc Hoa Kỳ [USA] và Canada [CAN]
Ok, tôi nghĩ rằng tôi có thể nhìn thấy một cái gì đó rõ ràng/đơn giản ở đây. nhưng tôi cần viết một truy vấn chỉ trả về các bản ghi khớp với nhiều tiêu chí trên cùng một cột
Bảng của tôi là một thiết lập liên kết rất đơn giản để áp dụng cờ cho người dùng
ID contactid flag flag_type
-----------------------------------
118 99 Volunteer 1
119 99 Uploaded 2
120 100 Via Import 3
121 100 Volunteer 1
122 100 Uploaded 2
vân vân. trong trường hợp này, bạn sẽ thấy cả liên hệ 99 và 100 đều được gắn cờ là "Tình nguyện viên" và "Đã tải lên"
Điều tôi cần để có thể làm là trả về CHỈ những người liên hệ đó khớp với nhiều tiêu chí được nhập qua biểu mẫu tìm kiếm. contactid phải khớp với TẤT CẢ các cờ đã chọn. trong đầu tôi, SQL sẽ trông giống như
Điều kiện tìm kiếm mà bạn chỉ định có thể chứa bất kỳ toán tử so sánh nào hoặc vị từ BETWEEN, DISTINCT, IN, LIKE, EXISTS, IS NULL và IS NOT NULL
Bạn có thể kết hợp hai vị từ bất kỳ với AND và OR. Ngoài ra, bạn có thể sử dụng từ khóa NOT để xác định rằng điều kiện tìm kiếm mà bạn muốn là giá trị phủ định của điều kiện tìm kiếm đã chỉ định. Mệnh đề WHERE có thể có bao nhiêu vị ngữ tùy thích
- VÀ nói rằng, để một hàng đủ điều kiện, hàng đó phải đáp ứng cả hai vị từ của điều kiện tìm kiếm. Ví dụ, để biết nhân viên nào trong bộ phận D21 được tuyển dụng sau ngày 31 tháng 12 năm 1987, hãy chỉ định.
... WHERE WORKDEPT = 'D21' AND HIREDATE > '1987-12-31'
- OR nói rằng, để một hàng đủ điều kiện, hàng đó có thể đáp ứng điều kiện được đặt bởi một trong hai hoặc cả hai vị từ của điều kiện tìm kiếm. Ví dụ: để tìm ra nhân viên nào ở bộ phận C01 hoặc D11, bạn có thể chỉ định.
... WHERE WORKDEPT = 'C01' OR WORKDEPT = 'D11'
Ghi chú. Bạn cũng có thể sử dụng IN để chỉ định yêu cầu này. NƠI LÀM VIỆC TẠI [
select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;
2C01select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;
2,select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;
2D11select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;
2]. - NOT nói rằng, để đủ điều kiện, một hàng không được đáp ứng các tiêu chí do điều kiện tìm kiếm hoặc vị từ theo sau NOT đặt ra. Ví dụ: để tìm tất cả nhân viên trong bộ phận E11 ngoại trừ những người có mã công việc bằng nhân viên phân tích, bạn có thể chỉ định.
... WHERE WORKDEPT = 'E11' AND NOT JOB = 'ANALYST'
Khi SQL đánh giá các điều kiện tìm kiếm có chứa các trình kết nối này, nó sẽ thực hiện theo một thứ tự cụ thể. Đầu tiên, SQL đánh giá các mệnh đề NOT, tiếp theo đánh giá các mệnh đề AND, sau đó là các mệnh đề OR
Bạn có thể thay đổi thứ tự đánh giá bằng cách sử dụng dấu ngoặc đơn. Các điều kiện tìm kiếm trong ngoặc đơn được đánh giá đầu tiên. Ví dụ: để chọn tất cả nhân viên thuộc phòng E11 và E21 có trình độ học vấn lớn hơn 12, bạn có thể chỉ định
Dấu ngoặc đơn xác định ý nghĩa của điều kiện tìm kiếm. Trong ví dụ này, bạn muốn tất cả các hàng có một
- giá trị WORKDEPT của E11 hoặc E21, và
- Giá trị EDLEVEL lớn hơn 12
Nếu bạn không sử dụng dấu ngoặc đơn
...
WHERE EDLEVEL > 12 AND WORKDEPT = 'E11'
OR WORKDEPT = 'E21'
Kết quả của bạn là khác nhau. Các hàng được chọn là các hàng có
- WORKDEPT = E11 và EDLEVEL > 12 hoặc
- WORKDEPT = E21, bất kể giá trị EDLEVEL là gì
Nếu bạn đang kết hợp nhiều phép so sánh bằng nhau, bạn có thể viết vị từ bằng AND như trong ví dụ sau
select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;0
Bạn cũng có thể so sánh hai danh sách, ví dụ
select column1, column2, column3 where [column1 like '05%' or column1 like '06%' or column1 like '07%'] from my_table;1
Khi hai danh sách được sử dụng, mục đầu tiên trong danh sách đầu tiên được so sánh với mục đầu tiên trong danh sách thứ hai, v.v. Vì vậy, mỗi danh sách phải chứa cùng một số mục. Sử dụng danh sách giống như viết truy vấn bằng AND. Danh sách chỉ có thể được sử dụng với các toán tử so sánh bằng và không bằng