Làm cách nào để khớp văn bản trong MySQL?
Sử dụng toán tử mysql> 2 và mẫu biểu thức chính quy, được mô tả trong phần này. Hoặc sử dụng mẫu SQL, được mô tả trong Công thức 4. 7 Show Các mẫu SQL (xem Công thức 4. 7) có khả năng được triển khai bởi các hệ thống cơ sở dữ liệu khác, vì vậy chúng có thể di động hợp lý ngoài MySQL. Mặt khác, chúng có phần hạn chế. Ví dụ: bạn có thể dễ dàng viết một mẫu SQL mysql> 3 để tìm các chuỗi chứa mysql> 4, nhưng bạn không thể viết một mẫu SQL duy nhất để xác định các chuỗi chứa bất kỳ ký tự nào trong số các ký tự mysql> 5, mysql> 6 hoặc mysql> 7. Bạn cũng không thể khớp nội dung chuỗi dựa trên các loại ký tự như chữ cái hoặc chữ số. Đối với các hoạt động như vậy, MySQL hỗ trợ một loại hoạt động khớp mẫu khác dựa trên biểu thức chính quy và toán tử mysql> 2 (hoặc mysql> 9 mysql> 2 để đảo ngược ý nghĩa của khớp). [] Kết hợp mysql> 2 sử dụng một tập hợp các phần tử mẫu khác với mysql> 2 và mysql> 3 (cả hai phần tử này đều không có gì đặc biệt trong biểu thức chính quy)Mẫu Những gì mô hình phù hợp mysql> 4bắt đầu chuỗi mysql> 5Kết thúc chuỗi mysql> 6Bất kỳ ký tự đơn nào mysql> 7Bất kỳ ký tự nào được liệt kê giữa các dấu ngoặc vuông mysql> 8Bất kỳ ký tự nào không được liệt kê giữa các dấu ngoặc vuông mysql> 9_______18_______0mysql> 1mysql> 0mysql> 3Luân phiên; mysql> 7Không hoặc nhiều phiên bản của phần tử trước mysql> 8Một hoặc nhiều trường hợp của phần tử trước mysql> 9mysql> 0mysql> 1mysql> 0 trường hợp của phần tử trướcmysql> 9mysql> 4mysql> 5mysql> 0mysql> 1Các trường hợp của phần tử trước mysql> 4 đến mysql> 0Bạn có thể đã quen thuộc với các ký tự mẫu biểu thức chính quy này, bởi vì nhiều ký tự trong số chúng giống với các ký tự được sử dụng bởi vi, grep, sed và các tiện ích Unix khác hỗ trợ biểu thức chính quy. Hầu hết chúng cũng được sử dụng trong các biểu thức chính quy được hiểu bởi Perl, PHP và Python. (Ví dụ, Chương 10 thảo luận về khớp mẫu trong tập lệnh Perl. ) Đối với Java, các thư viện lớp Jakarta ORO hoặc Regexp cung cấp các khả năng đối sánh cũng sử dụng các ký tự này Phần trước về các mẫu SQL đã chỉ ra cách khớp các chuỗi con ở đầu hoặc cuối chuỗi hoặc ở một vị trí tùy ý hoặc cụ thể trong một chuỗi. Bạn có thể làm những điều tương tự với các biểu thức thông thường
Ngoài ra, các biểu thức chính quy có các khả năng khác và có thể thực hiện các loại đối sánh mà các mẫu SQL không thể thực hiện được. Ví dụ: biểu thức chính quy có thể chứa các lớp ký tự, khớp với bất kỳ ký tự nào trong lớp
Các khả năng biểu thức chính quy của MySQL cũng hỗ trợ các lớp ký tự POSIX. Các bộ ký tự cụ thể này khớp với nhau, như được mô tả trong bảng sau lớp POSIX Những gì lớp học phù hợp 9 Ký tự chữ cái và số mysql> 0Ký tự chữ cái mysql> 1Khoảng trắng (dấu cách hoặc ký tự tab) mysql> 2Ký tự điều khiển mysql> 3chữ số mysql> 4Ký tự đồ họa (không trống) mysql> 5Ký tự chữ thường mysql> 6Ký tự đồ họa hoặc khoảng trắng mysql> 7ký tự chấm câu mysql> 8Dấu cách, tab, xuống dòng, xuống dòng mysql> 9Ký tự chữ hoa mysql> 0Chữ số thập lục phân (_______62_______1, mysql> 2, mysql> 3)Các lớp POSIX được thiết kế để sử dụng trong các lớp ký tự, vì vậy bạn sử dụng chúng trong dấu ngoặc vuông. Biểu thức sau khớp với các giá trị chứa bất kỳ ký tự chữ số thập lục phân nào mysql> Biểu thức chính quy có thể chứa các thay thế. Cú pháp trông như thế này
Một thay thế tương tự như một lớp ký tự theo nghĩa là nó khớp nếu bất kỳ lựa chọn thay thế nào khớp. Nhưng không giống như một lớp ký tự, các lựa chọn thay thế không giới hạn ở các ký tự đơn lẻ—chúng có thể là các chuỗi hoặc thậm chí là các mẫu. Ví dụ: sự thay thế sau khớp với các chuỗi bắt đầu bằng một nguyên âm hoặc kết thúc bằng mysql> 4mysql> Dấu ngoặc đơn có thể được sử dụng để nhóm luân phiên. Ví dụ: nếu bạn muốn so khớp các chuỗi bao gồm toàn chữ số hoặc toàn chữ cái, bạn có thể thử mẫu này, sử dụng phép thay thế mysql> Nhưng khi kết quả truy vấn hiển thị, mẫu không hoạt động. Đó là bởi vì nhóm mysql> 4 với phương án thứ nhất và nhóm mysql> 5 với phương án thứ hai. Vì vậy, mẫu thực sự khớp với các chuỗi bắt đầu bằng một hoặc nhiều chữ số hoặc các chuỗi kết thúc bằng một hoặc nhiều chữ cái. Tuy nhiên, nếu bạn nhóm các lựa chọn thay thế trong ngoặc đơn, thì mysql> 4 và mysql> 5 sẽ áp dụng cho cả hai và mẫu sẽ hoạt động như bạn mong đợimysql> Không giống như đối sánh mẫu SQL, chỉ thành công nếu mẫu khớp với toàn bộ giá trị so sánh, biểu thức chính quy thành công nếu mẫu khớp với bất kỳ vị trí nào trong giá trị. Hai đối sánh mẫu sau đây là tương đương theo nghĩa là mỗi đối sánh chỉ thành công đối với các chuỗi chứa ký tự mysql> 6, nhưng đối sánh mẫu đầu tiên hiệu quả hơn vì mẫu đơn giản hơn'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$' Biểu thức chính quy không khớp với giá trị mysql> 0. Điều này đúng cho cả mysql> 2 và cho mysql> 9 mysql> 2mysql> 0Thực tế là một biểu thức chính quy khớp với một chuỗi nếu mẫu được tìm thấy ở bất kỳ đâu trong chuỗi có nghĩa là bạn phải cẩn thận để không vô tình chỉ định một mẫu khớp với chuỗi trống. Nếu bạn làm như vậy, nó sẽ khớp với mọi giá trị không phải ______75_______0. Ví dụ: mẫu mysql> 5 khớp với bất kỳ số lượng mysql> 5 ký tự nào, thậm chí không có ký tự nào. Nếu mục tiêu của bạn là chỉ khớp các chuỗi chứa các chuỗi không trống gồm _______ 5 ký tự, hãy sử dụng _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ để thay thế. mysql> 8 yêu cầu một hoặc nhiều phiên bản của phần tử mẫu trước đó để khớpGiống như đối sánh mẫu SQL được thực hiện bằng cách sử dụng 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'0, đối sánh biểu thức chính quy được thực hiện với mysql> 2 đôi khi tương đương với so sánh chuỗi con. Các ký tự phụ mysql> 4 và mysql> 5 phục vụ cùng một mục đích như 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'4 hoặc 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'5, ít nhất là nếu bạn đang tìm kiếm các chuỗi ký tự khớp mẫu so sánh chuỗi con 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'6 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'7 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'8 'abc' REGEXP 'b' 'abc' REGEXP '^.*b.*$'9 Đối với các chuỗi không theo nghĩa đen, thông thường không thể xây dựng phép so sánh chuỗi con tương đương. Ví dụ: để khớp các chuỗi bắt đầu bằng bất kỳ chuỗi chữ số không trống nào, bạn có thể sử dụng khớp mẫu này Làm cách nào để khớp ký tự trong MySQL?Để đặt tên cho một dãy ký tự, hãy sử dụng dấu gạch ngang . [a-z] khớp với bất kỳ chữ cái nào, trong khi [0-9] khớp với bất kỳ chữ số nào. * khớp với 0 hoặc nhiều trường hợp của đối tượng trước nó. Ví dụ: x* khớp với bất kỳ số lượng ký tự x nào, [0-9]* khớp với bất kỳ số lượng chữ số nào và.
Chúng ta có thể sử dụng == trong MySQL không?Tìm hiểu MySQL từ đầu về Khoa học dữ liệu và Phân tích
. Nếu bạn sử dụng dấu bằng kép (==) trong MySQL, bạn sẽ nhận được thông báo lỗi. Bây giờ, hãy so sánh giá trị biến trên với 10. Nếu cả hai giá trị giống nhau thì kết quả sẽ là 1 ngược lại là 0. It can be used to compare two values. If you use double equal sign(==) in MySQL, you will get an error message. Now, compare the above variable value with 10. If both the values are same then the result will be 1 otherwise 0.
Cách tìm kiếm đầy đủĐể sử dụng tìm kiếm toàn văn bản trong MySQL, bạn cần phải sử dụng các chỉ mục toàn văn bản và hàm MATCH() . Chỉ mục toàn văn là FULLTEXT. Mysql hỗ trợ các chỉ mục toàn văn trên các bảng MyISAM. Hỗ trợ InnoDB đã được thêm vào kể từ phiên bản 5. 6.
Làm cách nào để tìm kiếm một từ trong MySQL?hàm LOCATE()
. Cả hai chuỗi này đều được truyền dưới dạng đối số. Một đối số tùy chọn có thể được sử dụng để chỉ định từ vị trí nào của chuỗi (i. e. chuỗi cần tìm) quá trình tìm kiếm sẽ bắt đầu. |