Làm cách nào để khớp văn bản trong MySQL?

Sử dụng toán tử

mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
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

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> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
3 để tìm các chuỗi chứa
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
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> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
5,
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
6 hoặc
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
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> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2 (hoặc
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
9
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2 để đảo ngược ý nghĩa của khớp). [] Kết hợp
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2 sử dụng một tập hợp các phần tử mẫu khác với
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
2 và
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
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> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
4

bắt đầu chuỗi

mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
5

Kết thúc chuỗi

mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
6

Bất kỳ ký tự đơn nào

mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
7

Bất kỳ ký tự nào được liệt kê giữa các dấu ngoặc vuông

mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
8

Bất kỳ ký tự nào không được liệt kê giữa các dấu ngoặc vuông

mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
9_______18_______0
mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
1
mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
0
mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
3

Luân phiên;

mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
7

Không hoặc nhiều phiên bản của phần tử trước

mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
8

Một hoặc nhiều trường hợp của phần tử trước

mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
9
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
0
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
1

mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
0 trường hợp của phần tử trước

mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
9
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
4
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
5
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
0
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
1

Các trường hợp của phần tử trước

mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
4 đến
mysql> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+
0

Bạ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

  • Các chuỗi bắt đầu bằng một chuỗi con cụ thể

    mysql> SELECT name FROM metal WHERE name REGEXP '^co';
    +--------+
    | name   |
    +--------+
    | copper |
    +--------+
  • Các chuỗi kết thúc bằng một chuỗi con cụ thể

    mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
    +--------+
    | name   |
    +--------+
    | copper |
    | silver |
    +--------+
  • Các chuỗi chứa một chuỗi con cụ thể tại bất kỳ vị trí nào

    mysql> SELECT name FROM metal WHERE name REGEXP 'er';
    +---------+
    | name    |
    +---------+
    | copper  |
    | mercury |
    | silver  |
    +---------+
  • Các chuỗi chứa một chuỗi con cụ thể tại một vị trí cụ thể

    mysql> SELECT name FROM metal WHERE name REGEXP '^..pp';
    +--------+
    | name   |
    +--------+
    | copper |
    +--------+

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

  • Để viết một lớp ký tự, hãy liệt kê các ký tự bạn muốn lớp khớp với bên trong dấu ngoặc vuông. Do đó, mẫu

    alternative1|alternative2|...
    0 khớp với
    mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
    +--------+
    | name   |
    +--------+
    | copper |
    | silver |
    +--------+
    5,
    mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
    +--------+
    | name   |
    +--------+
    | copper |
    | silver |
    +--------+
    6 hoặc
    mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
    +--------+
    | name   |
    +--------+
    | copper |
    | silver |
    +--------+
    7

  • Các lớp có thể biểu thị phạm vi ký tự bằng cách sử dụng dấu gạch ngang giữa đầu và cuối phạm vi.

    alternative1|alternative2|...
    4 khớp với bất kỳ chữ cái nào,
    alternative1|alternative2|...
    5 khớp với chữ số và
    alternative1|alternative2|...
    6 khớp với chữ cái hoặc chữ số

  • Để phủ định một lớp ký tự (“khớp bất kỳ ký tự nào ngoại trừ những ký tự này”), hãy bắt đầu danh sách bằng ký tự

    mysql> SELECT name FROM metal WHERE name REGEXP 'er';
    +---------+
    | name    |
    +---------+
    | copper  |
    | mercury |
    | silver  |
    +---------+
    4. Ví dụ:
    alternative1|alternative2|...
    8 khớp với mọi thứ trừ chữ số

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

alternative1|alternative2|...
9

Ký tự chữ cái và số

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
0

Ký tự chữ cái

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
1

Khoảng trắng (dấu cách hoặc ký tự tab)

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
2

Ký tự điều khiển

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
3

chữ số

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
4

Ký tự đồ họa (không trống)

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
5

Ký tự chữ thường

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
6

Ký tự đồ họa hoặc khoảng trắng

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
7

ký tự chấm câu

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
8

Dấu cách, tab, xuống dòng, xuống dòng

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+
9

Ký tự chữ hoa

mysql> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
0

Chữ số thập lục phân (_______62_______1,

mysql> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
2,
mysql> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
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> SELECT name, name REGEXP '[[:xdigit:]]' FROM metal;
+----------+----------------------------+
| name     | name REGEXP '[[:xdigit:]]' |
+----------+----------------------------+
| copper   |                          1 |
| gold     |                          1 |
| iron     |                          0 |
| lead     |                          1 |
| mercury  |                          1 |
| platinum |                          1 |
| silver   |                          1 |
| tin      |                          0 |
+----------+----------------------------+

Biểu thức chính quy có thể chứa các thay thế. Cú pháp trông như thế này

alternative1|alternative2|...

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> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+
4

mysql> SELECT name FROM metal WHERE name REGEXP '^[aeiou]|er$';
+--------+
| name   |
+--------+
| copper |
| iron   |
| silver |
+--------+

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> SELECT '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$';
+-------------------------------------------+
| '0m' REGEXP '^[[:digit:]]+|[[:alpha:]]+$' |
+-------------------------------------------+
|                                         1 |
+-------------------------------------------+

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> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
4 với phương án thứ nhất và nhóm
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
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> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
4 và
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
5 sẽ áp dụng cho cả hai và mẫu sẽ hoạt động như bạn mong đợi

mysql> SELECT '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$';
+---------------------------------------------+
| '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$' |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+

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> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
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> SELECT '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$';
+---------------------------------------------+
| '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$' |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
0. Điều này đúng cho cả
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2 và cho
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
9
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2

mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
0

Thự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> SELECT '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$';
+---------------------------------------------+
| '0m' REGEXP '^([[:digit:]]+|[[:alpha:]]+)$' |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
5 khớp với bất kỳ số lượng
mysql> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
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> SELECT name FROM metal WHERE name REGEXP '^..pp';
+--------+
| name   |
+--------+
| copper |
+--------+
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ớp

Giố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> SELECT name FROM metal WHERE name REGEXP 'er$';
+--------+
| name   |
+--------+
| copper |
| silver |
+--------+
2 đôi khi tương đương với so sánh chuỗi con. Các ký tự phụ
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
4 và
mysql> SELECT name FROM metal WHERE name REGEXP 'er';
+---------+
| name    |
+---------+
| copper  |
| mercury |
| silver  |
+---------+
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.