Hướng dẫn SQL này giải thích cách sử dụng điều kiện SQL LIKE [để thực hiện so khớp mẫu] với cú pháp, ví dụ và bài tập thực hành
Sự mô tả
Điều kiện THÍCH trong SQL cho phép bạn sử dụng các ký tự đại diện để thực hiện so khớp mẫu trong một truy vấn. Điều kiện LIKE được sử dụng trong mệnh đề WHERE của câu lệnh CHỌN, CHÈN, CẬP NHẬT hoặc XÓA
cú pháp
Cú pháp cho điều kiện THÍCH trong SQL là
expression LIKE pattern [ ESCAPE 'escape_character' ]
Tham số hoặc Đối số
biểu thứcMột biểu thức ký tự chẳng hạn như cột hoặc trường. họa tiếtMột biểu thức ký tự có khớp mẫu. Các ký tự đại diện mà bạn có thể chọn là
WildcardExplanation%Cho phép bạn khớp bất kỳ chuỗi nào có độ dài bất kỳ [kể cả độ dài bằng 0]_Cho phép bạn khớp một ký tự ESCAPE 'escape_character'Tùy chọn. Nó cho phép bạn khớp mẫu trên các thể hiện bằng chữ của một ký tự đại diện, chẳng hạn nhưSELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 hoặc
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;2
TIỀN BOA. Nếu bạn đang khớp mẫu với kiểu dữ liệu char, hãy nhớ rằng các ký tự được đệm bằng khoảng trắng ở cuối để lấp đầy độ dài của trường. Điều này có thể mang lại cho bạn kết quả không mong muốn khi bạn sử dụng điều kiện THÍCH để khớp mẫu ở cuối chuỗi
DDL/DML cho các ví dụ
Nếu bạn muốn làm theo hướng dẫn này, hãy lấy DDL để tạo bảng và DML để điền dữ liệu. Sau đó thử các ví dụ trong cơ sở dữ liệu của riêng bạn
Nhận DDL/DML
Ví dụ - Sử dụng Ký tự đại diện SELECT *
FROM customers
WHERE last_name LIKE 'J%'
ORDER BY last_name;
1 trong Điều kiện THÍCH
Hãy giải thích cách ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 hoạt động trong điều kiện SQL LIKE. Hãy nhớ rằng ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 khớp với mọi chuỗi có độ dài bất kỳ [kể cả độ dài bằng 0]
Trong ví dụ đầu tiên này, chúng tôi muốn tìm tất cả các bản ghi trong bảng khách hàng nơi họ của khách hàng bắt đầu bằng 'J'
Trong ví dụ này, chúng tôi có một bảng được gọi là khách hàng với dữ liệu sau
khách hàng_idlast_namefirst_namefavorite_website4000JacksonJoetechonthenet. com5000SmithJanedigminecraft. com6000FergusonSamanthabighoạt động. com7000ReynoldsAllenkiểm tra toán học của bạn. com8000AndersonPaigeNULL9000JohnsonDerektechonthenet. com
Nhập câu lệnh SQL sau
Thử điSELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;
Sẽ có 2 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy
khách hàng_idlast_namefirst_namefavorite_website4000JacksonJoetechonthenet. com9000JohnsonDerektechonthenet. com
Ví dụ này trả về các bản ghi trong bảng khách hàng nơi last_name bắt đầu bằng 'J'. Như bạn có thể thấy, hồ sơ cho họ Jackson và Johnson đã được trả lại
Vì điều kiện LIKE không phân biệt chữ hoa chữ thường nên câu lệnh SQL sau đây sẽ trả về kết quả tương tự
Thử điSELECT * FROM customers WHERE last_name LIKE 'j%' ORDER BY last_name;
Sử dụng nhiều ký tự đại diện SELECT *
FROM customers
WHERE last_name LIKE 'J%'
ORDER BY last_name;
1 trong điều kiện THÍCH
Bạn cũng có thể sử dụng ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 nhiều lần với điều kiện THÍCH
Sử dụng cùng một bảng khách hàng với dữ liệu sau
khách hàng_idlast_namefirst_namefavorite_website4000JacksonJoetechonthenet. com5000SmithJanedigminecraft. com6000FergusonSamanthabighoạt động. com7000ReynoldsAllenkiểm tra toán học của bạn. com8000AndersonPaigeNULL9000JohnsonDerektechonthenet. com
Hãy thử tìm tất cả các giá trị last_name từ bảng khách hàng trong đó last_name chứa chữ 'e'. Nhập câu lệnh SQL sau
Thử điSELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;0
Sẽ có 3 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy
last_nameAndersonFergusonReynolds
Trong ví dụ này, họ Anderson, Ferguson và Reynolds chứa chữ 'e'
Ví dụ - Sử dụng Ký tự đại diện SELECT *
FROM customers
WHERE last_name LIKE 'J%'
ORDER BY last_name;
2 trong Điều kiện THÍCH
Tiếp theo, hãy giải thích cách hoạt động của ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;2 [ký tự đại diện gạch dưới] trong điều kiện THÍCH. Hãy nhớ rằng ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;2 đang tìm kiếm chính xác một ký tự, không giống như ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1
Sử dụng bảng danh mục với dữ liệu sau
danh mục_idcategory_name25Deli50Sản xuất75Tiệm bánh100Hàng tổng hợp125Công nghệ
Hãy thử tìm tất cả các bản ghi từ bảng danh mục trong đó category_id dài 2 chữ số và kết thúc bằng '5'. Nhập câu lệnh SQL sau
Thử điSELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;5
Sẽ có 2 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy
danh mục_idcategory_name25Deli75Bakery
Trong ví dụ này, có 2 bản ghi sẽ khớp mẫu - giá trị category_id là 25 và 75. Lưu ý rằng category_id của 125 không được chọn vì ký tự đại diện ________ 12 chỉ khớp với một ký tự
Sử dụng nhiều ký tự đại diện SELECT *
FROM customers
WHERE last_name LIKE 'J%'
ORDER BY last_name;
2 trong điều kiện THÍCH
Nếu bạn muốn đối sánh giá trị có 3 chữ số kết thúc bằng '5', bạn cần sử dụng ký tự đại diện
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;2 hai lần. Bạn có thể sửa đổi truy vấn của mình như sau
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;9
Bây giờ bạn sẽ trả về giá trị category_id là 125
category_idcategory_name125Công nghệ
Ví dụ - Sử dụng toán tử NOT với điều kiện LIKE
Tiếp theo, hãy xem một ví dụ về cách sử dụng Toán tử NOT với điều kiện LIKE
Trong ví dụ này, chúng tôi có một bảng được gọi là nhà cung cấp với dữ liệu sau
nhà cung cấp_idsupplier_namecitystate100MicrosoftRedmondWashington200GoogleMountain ViewCalifornia300OracleThành phố RedwoodCalifornia400Kimberly-ClarkIrvingTexas500Tyson FoodsSpringdaleArkansas600SC JohnsonRacineWisconsin700Dole Food CompanyLàng WestlakeCalifornia800Flowers FoodsThomasvilleGeorgia900Electronic ArtsforniaThành phố RedwoodCalifornia
Hãy tìm tất cả các bản ghi trong bảng nhà cung cấp mà tên_nhà cung cấp không chứa ký tự 'o'. Nhập câu lệnh SQL sau
Thử điSELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;0
Sẽ có 1 bản ghi được chọn. Đây là những kết quả mà bạn sẽ thấy
nhà cung cấp_idsupplier_namecitystate400Kimberly-ClarkIrvingTexas
Trong ví dụ này, chỉ có một bản ghi trong bảng nhà cung cấp mà tên_nhà cung cấp không chứa chữ 'o'
Ví dụ - Sử dụng ký tự thoát với điều kiện THÍCH
Điều quan trọng là phải hiểu cách "Thoát các ký tự" khi khớp mẫu. Thay vào đó, bạn có thể thoát khỏi
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 hoặc
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;2 và tìm kiếm các phiên bản theo nghĩa đen
Giả sử bạn muốn tìm kiếm
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 theo nghĩa đen trong điều kiện THÍCH. Bạn có thể làm điều này bằng ký tự Escape. Trong ví dụ của chúng tôi, chúng tôi sẽ sử dụng
SELECT * FROM customers WHERE last_name LIKE 'j%' ORDER BY last_name;8 làm ký tự thoát trong điều kiện THÍCH
GHI CHÚ. Bạn chỉ có thể xác định một ký tự thoát là một ký tự đơn. Tốt nhất là chọn một ký tự không xuất hiện thường xuyên trong dữ liệu của bạn, chẳng hạn như. hoặc #
Trong ví dụ này, chúng tôi tạo một bảng có tên test với dữ liệu sau
test_idtest_value110%225%3100499
Chúng tôi có thể trả về tất cả các bản ghi từ bảng kiểm tra trong đó test_value chứa
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 chữ. Nhập câu lệnh SQL sau
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;6
Đây là những kết quả mà bạn sẽ thấy
test_idtest_value110%225%
Ví dụ này xác định ký tự
SELECT * FROM customers WHERE last_name LIKE 'j%' ORDER BY last_name;8 là ký tự thoát. Giá trị
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 đầu tiên và cuối cùng trong điều kiện THÍCH được coi là ký tự đại diện thông thường.
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;02 là một
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 đã thoát nên nó được coi là một giá trị
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1 theo nghĩa đen
Bạn có thể sửa đổi thêm ví dụ trên và chỉ trả về test_values bắt đầu bằng 1 và chứa ký tự
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1. Nhập câu lệnh SQL sau
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;3
Đây là những kết quả mà bạn sẽ thấy
test_idtest_value110%
Ví dụ này sẽ chỉ trả về một bản ghi lần này. Bởi vì chỉ có một test_value bắt đầu bằng 1 và chứa ký tự
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;1
Các câu hỏi thường gặp
Câu hỏi. Bạn kết hợp hàm UPPER của Oracle với điều kiện SQL LIKE như thế nào? . Vấn đề là nó có thể được nhập theo những cách sau. KIỂM TRA, Kiểm tra, hoặc kiểm tra.
Trả lời. Để trả lời câu hỏi này, hãy xem một ví dụ.
Giả sử rằng chúng ta có bảng nhà cung cấp với trường có tên là nhà cung cấp_name chứa các giá trị TEST, Test hoặc test
Nếu chúng tôi muốn tìm tất cả các bản ghi có chứa từ "kiểm tra", bất kể nó được lưu trữ dưới dạng TEST, Test hay test, chúng tôi có thể chạy một trong các câu lệnh SQL SELECT sau
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;5
HOẶC
SELECT * FROM customers WHERE last_name LIKE 'J%' ORDER BY last_name;0
Các câu lệnh SQL SELECT này sử dụng kết hợp hàm Oracle UPPER và điều kiện LIKE trong SQL để trả về tất cả các bản ghi trong đó trườngtên nhà cung cấp chứa từ "kiểm tra", bất kể nó được lưu dưới dạng TEST, Test hay test.
Bài tập thực hành
Nếu bạn muốn kiểm tra kỹ năng của mình bằng cách sử dụng điều kiện THÍCH trong SQL, hãy thử một số bài tập thực hành của chúng tôi
Những bài tập này cho phép bạn thử các kỹ năng của mình với điều kiện THÍCH. Bạn sẽ được cung cấp các câu hỏi mà bạn cần phải giải quyết. Sau mỗi bài tập, chúng tôi cung cấp lời giải để bạn có thể kiểm tra đáp án của mình. Hãy thử một lần