Nếu thích PHP

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

Đặt mua

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ết

Mộ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ử đi
SELECT *
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ử đi
SELECT *
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ử đi
SELECT *
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ử đi
SELECT *
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

Thử đi
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ử đi
SELECT *
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

Bạn có thể sử dụng == để so sánh các chuỗi trong PHP không?

Toán tử gán chỉ định biến ở bên trái để có một giá trị mới như biến ở bên phải, trong khi toán tử bằng == kiểm tra sự bằng nhau và trả về đúng hoặc sai tùy theo . Thí dụ. Ví dụ này mô tả so sánh chuỗi bằng toán tử ==. . Example: This example describes the string comparison using the == operator.

Chuỗi có phải là PHP không?

Hàm is_string[] kiểm tra biến có phải là chuỗi hay không . Hàm này trả về true [1] nếu biến là kiểu chuỗi, ngược lại trả về false/nothing.

Dấu chấm bằng PHP là gì?

". = " toán tử là một toán tử chuỗi, đầu tiên nó chuyển đổi các giá trị thành chuỗi; và vì ". " có nghĩa là nối / nối thêm , kết quả là chuỗi " 120 ".

Làm thế nào bạn sẽ xác định vị trí một chuỗi trong một chuỗi trong PHP?

Hàm strpos[] tìm vị trí xuất hiện đầu tiên của một chuỗi bên trong một chuỗi khác. Ghi chú. Hàm strpos[] phân biệt chữ hoa chữ thường.

Chủ Đề