So sánh chuỗi MySQL

Khi MySQL thực hiện so sánh chuỗi thì nó không phân biệt chữ hoa chữ thường nhưng với sự trợ giúp của từ khóa BINARY, MySQL có thể thực hiện so sánh chuỗi phân biệt chữ hoa chữ thường. Đó là bởi vì từ khóa BINARY hướng dẫn MySQL so sánh các ký tự trong chuỗi bằng cách sử dụng các giá trị ASCII cơ bản của chúng thay vì chỉ các chữ cái của chúng. Nó có thể được minh họa bằng ví dụ sau từ bảng 'Student_info' có dữ liệu sau -

mysql> Select * from student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
| 101  | YashPal | Amritsar   | History    |
| 105  | Gaurav  | Chandigarh | Literature |
| 125  | Raman   | Shimla     | Computers  |
+------+---------+------------+------------+
3 rows in set (0.00 sec)

Truy vấn bên dưới sẽ sử dụng từ khóa BINARY để buộc MySQL thực hiện so sánh chuỗi phân biệt chữ hoa chữ thường

mysql> select * from student_info WHERE BINARY Name IN('YashPal', 'GAURAV');
+------+---------+----------+---------+
| id   | Name    | Address  | Subject |
+------+---------+----------+---------+
| 101  | YashPal | Amritsar | History |
+------+---------+----------+---------+
1 row in set (0.08 sec)

Từ tập kết quả trên, rõ ràng là sau khi sử dụng từ khóa BINARY, MySQL thực hiện so sánh chuỗi phân biệt chữ hoa chữ thường

Các ví dụ trong các phần trước đã được thực hiện mà không quan tâm đến chữ cái. Nhưng đôi khi bạn cần đảm bảo rằng một thao tác chuỗi phân biệt chữ hoa chữ thường và ngược lại. Phần này mô tả cách thực hiện điều đó đối với các phép so sánh thông thường. công thức 4. 11 bao hàm độ nhạy chữ hoa chữ thường trong các hoạt động khớp mẫu

Theo mặc định, so sánh chuỗi trong MySQL không phân biệt chữ hoa chữ thường

mysql> SELECT name, name = 'lead', name = 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name = 'lead' | name = 'LEAD' |
+----------+---------------+---------------+
| copper   |             0 |             0 |
| gold     |             0 |             0 |
| iron     |             0 |             0 |
| lead     |             1 |             1 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+

Việc thiếu phân biệt chữ hoa chữ thường cũng áp dụng cho các so sánh thứ tự tương đối

mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+

Nếu bạn đã quen thuộc với thứ tự đối chiếu ASCII, bạn biết rằng các chữ cái viết thường có mã ASCII cao hơn các chữ cái viết hoa, do đó, kết quả trong cột so sánh thứ hai của truy vấn trước đó có thể làm bạn ngạc nhiên. Những kết quả đó phản ánh rằng việc sắp xếp chuỗi được thực hiện theo mặc định mà không quan tâm đến chữ cái, vì vậy cả

mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
0 và
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
1 đều được coi là ít hơn về mặt từ vựng của
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
2

So sánh chuỗi chỉ phân biệt chữ hoa chữ thường nếu ít nhất một trong các toán hạng là chuỗi nhị phân. Để kiểm soát độ nhạy trường hợp trong so sánh chuỗi, hãy sử dụng các kỹ thuật sau

  • Để làm cho trường hợp so sánh chuỗi trở nên nhạy cảm mà thông thường sẽ không có, hãy chuyển (chuyển đổi) một trong các chuỗi thành dạng nhị phân bằng cách sử dụng từ khóa

    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    3. Không quan trọng bạn tạo chuỗi nhị phân nào. Miễn là một trong số chúng, so sánh sẽ phân biệt chữ hoa chữ thường

    ________số 8_______

    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    3 có sẵn dưới dạng toán tử ép kiểu kể từ MySQL 3. 23

  • Để so sánh chuỗi không phân biệt chữ hoa chữ thường như thông thường, hãy chuyển đổi cả hai chuỗi thành cùng một chữ cái bằng cách sử dụng

    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    5 hoặc
    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    6

    mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
    +------------+------------+-------------------------+
    | UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
    +------------+------------+-------------------------+
    | A          | B          |                       1 |
    +------------+------------+-------------------------+
    mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
    +------------+------------+-------------------------+
    | LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
    +------------+------------+-------------------------+
    | a          | b          |                       1 |
    +------------+------------+-------------------------+

Các nguyên tắc tương tự có thể được áp dụng cho các hàm so sánh chuỗi. Ví dụ:

mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
7 nhận hai đối số chuỗi và trả về -1, 0 hoặc 1, tùy thuộc vào chuỗi đầu tiên về mặt từ vựng có nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai hay không. Cho đến MySQL 4. 0. 0,
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
7 phân biệt chữ hoa chữ thường;

mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+

Tuy nhiên, kể từ MySQL 4. 0. 1,

mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
7 không phân biệt chữ hoa chữ thường

mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                   0 |                   0 |                   0 |
+---------------------+---------------------+---------------------+

Để bảo tồn pre-4. 0. 1 hành vi, biến một trong các đối số thành chuỗi nhị phân

mysql> SELECT STRCMP(BINARY 'Abc','abc'), STRCMP(BINARY 'abc','Abc');
+----------------------------+----------------------------+
| STRCMP(BINARY 'Abc','abc') | STRCMP(BINARY 'abc','Abc') |
+----------------------------+----------------------------+
|                         -1 |                          1 |
+----------------------------+----------------------------+

Nhân tiện, hãy lưu ý đặc biệt về thực tế là các giá trị trả về bằng 0 và khác 0 từ

mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
7 biểu thị sự bình đẳng và bất bình đẳng. Điều này khác với toán tử so sánh
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
1, trả về 0 và khác 0 cho bất đẳng thức và đẳng thức

Để tránh bất ngờ khi so sánh chuỗi, hãy biết các quy tắc chung xác định xem chuỗi có phải là nhị phân hay không

  • Bất kỳ chuỗi ký tự, biểu thức chuỗi hoặc cột chuỗi nào cũng có thể được tạo thành nhị phân bằng cách đặt trước nó bằng từ khóa

    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    3. Nếu
    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    3 không có mặt, các quy tắc sau sẽ được áp dụng

  • Một biểu thức chuỗi là nhị phân nếu bất kỳ chuỗi cấu thành nào của nó là nhị phân, nếu không thì không. Ví dụ: kết quả được trả về bởi biểu thức

    mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
    +----------+----------------------+----------------------+
    | name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
    +----------+----------------------+----------------------+
    | copper   |                    0 |                    0 |
    | gold     |                    0 |                    0 |
    | iron     |                    0 |                    0 |
    | lead     |                    1 |                    0 |
    | mercury  |                    0 |                    0 |
    | platinum |                    0 |                    0 |
    | silver   |                    0 |                    0 |
    | tin      |                    0 |                    0 |
    +----------+----------------------+----------------------+
    4 này là nhị phân vì đối số thứ hai của nó là nhị phân

    CONCAT('This is a ',BINARY 'binary',' string')
  • Cột chuỗi có phân biệt chữ hoa chữ thường hay không tùy thuộc vào loại cột. Các loại

    mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
    +----------+----------------------+----------------------+
    | name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
    +----------+----------------------+----------------------+
    | copper   |                    0 |                    0 |
    | gold     |                    0 |                    0 |
    | iron     |                    0 |                    0 |
    | lead     |                    1 |                    0 |
    | mercury  |                    0 |                    0 |
    | platinum |                    0 |                    0 |
    | silver   |                    0 |                    0 |
    | tin      |                    0 |                    0 |
    +----------+----------------------+----------------------+
    5 và
    mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
    +----------+----------------------+----------------------+
    | name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
    +----------+----------------------+----------------------+
    | copper   |                    0 |                    0 |
    | gold     |                    0 |                    0 |
    | iron     |                    0 |                    0 |
    | lead     |                    1 |                    0 |
    | mercury  |                    0 |                    0 |
    | platinum |                    0 |                    0 |
    | silver   |                    0 |                    0 |
    | tin      |                    0 |                    0 |
    +----------+----------------------+----------------------+
    6 không phân biệt chữ hoa chữ thường theo mặc định, nhưng có thể được khai báo là
    mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
    +----------+---------------+---------------+
    | name     | name < 'lead' | name < 'LEAD' |
    +----------+---------------+---------------+
    | copper   |             1 |             1 |
    | gold     |             1 |             1 |
    | iron     |             1 |             1 |
    | lead     |             0 |             0 |
    | mercury  |             0 |             0 |
    | platinum |             0 |             0 |
    | silver   |             0 |             0 |
    | tin      |             0 |             0 |
    +----------+---------------+---------------+
    3 để làm cho chúng phân biệt chữ hoa chữ thường. Các cột
    mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
    +----------+----------------------+----------------------+
    | name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
    +----------+----------------------+----------------------+
    | copper   |                    0 |                    0 |
    | gold     |                    0 |                    0 |
    | iron     |                    0 |                    0 |
    | lead     |                    1 |                    0 |
    | mercury  |                    0 |                    0 |
    | platinum |                    0 |                    0 |
    | silver   |                    0 |                    0 |
    | tin      |                    0 |                    0 |
    +----------+----------------------+----------------------+
    8,
    mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
    +----------+----------------------+----------------------+
    | name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
    +----------+----------------------+----------------------+
    | copper   |                    0 |                    0 |
    | gold     |                    0 |                    0 |
    | iron     |                    0 |                    0 |
    | lead     |                    1 |                    0 |
    | mercury  |                    0 |                    0 |
    | platinum |                    0 |                    0 |
    | silver   |                    0 |                    0 |
    | tin      |                    0 |                    0 |
    +----------+----------------------+----------------------+
    9 và
    mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
    +------------+------------+-------------------------+
    | UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
    +------------+------------+-------------------------+
    | A          | B          |                       1 |
    +------------+------------+-------------------------+
    mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
    +------------+------------+-------------------------+
    | LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
    +------------+------------+-------------------------+
    | a          | b          |                       1 |
    +------------+------------+-------------------------+
    0 không phân biệt chữ hoa chữ thường.
    mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
    +------------+------------+-------------------------+
    | UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
    +------------+------------+-------------------------+
    | A          | B          |                       1 |
    +------------+------------+-------------------------+
    mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
    +------------+------------+-------------------------+
    | LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
    +------------+------------+-------------------------+
    | a          | b          |                       1 |
    +------------+------------+-------------------------+
    1 cột có phân biệt chữ hoa chữ thường. (Xem bảng trong. )

Tóm lại, các phép so sánh phân biệt chữ hoa chữ thường nếu chúng liên quan đến một chuỗi ký tự nhị phân hoặc biểu thức chuỗi hoặc một cột

mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
5
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
3,
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
6
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
3 hoặc
mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
+------------+------------+-------------------------+
| UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
+------------+------------+-------------------------+
| A          | B          |                       1 |
+------------+------------+-------------------------+
mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
+------------+------------+-------------------------+
| LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
+------------+------------+-------------------------+
| a          | b          |                       1 |
+------------+------------+-------------------------+
1. So sánh không phân biệt chữ hoa chữ thường nếu chúng chỉ liên quan đến chuỗi ký tự không nhị phân hoặc biểu thức chuỗi hoặc cột
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
5,
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
6,
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
8,
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
9 hoặc
mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
+------------+------------+-------------------------+
| UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
+------------+------------+-------------------------+
| A          | B          |                       1 |
+------------+------------+-------------------------+
mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
+------------+------------+-------------------------+
| LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
+------------+------------+-------------------------+
| a          | b          |                       1 |
+------------+------------+-------------------------+
0

Các cột

mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
8 và
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
9 không phân biệt chữ hoa chữ thường. Hơn nữa, vì chúng được lưu trữ nội bộ dưới dạng số, bạn không thể khai báo chúng phân biệt chữ hoa chữ thường trong định nghĩa bảng bằng cách thêm từ khóa
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
3. Tuy nhiên, bạn vẫn có thể sử dụng từ khóa
mysql> SELECT name, name < 'lead', name < 'LEAD' FROM metal;
+----------+---------------+---------------+
| name     | name < 'lead' | name < 'LEAD' |
+----------+---------------+---------------+
| copper   |             1 |             1 |
| gold     |             1 |             1 |
| iron     |             1 |             1 |
| lead     |             0 |             0 |
| mercury  |             0 |             0 |
| platinum |             0 |             0 |
| silver   |             0 |             0 |
| tin      |             0 |             0 |
+----------+---------------+---------------+
3 trước các giá trị
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
8 hoặc
mysql> SELECT name, name = BINARY 'lead', BINARY name = 'LEAD' FROM metal;
+----------+----------------------+----------------------+
| name     | name = BINARY 'lead' | BINARY name = 'LEAD' |
+----------+----------------------+----------------------+
| copper   |                    0 |                    0 |
| gold     |                    0 |                    0 |
| iron     |                    0 |                    0 |
| lead     |                    1 |                    0 |
| mercury  |                    0 |                    0 |
| platinum |                    0 |                    0 |
| silver   |                    0 |                    0 |
| tin      |                    0 |                    0 |
+----------+----------------------+----------------------+
9 để so sánh nhằm tạo ra thao tác phân biệt chữ hoa chữ thường

Nếu bạn thấy rằng bạn đã khai báo một cột bằng cách sử dụng loại không phù hợp với loại so sánh mà bạn thường sử dụng, hãy sử dụng

mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
8
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
9 để thay đổi loại. Giả sử bạn có một bảng trong đó bạn lưu trữ các bài báo

CREATE TABLE news
(
    id      INT UNSIGNED NOT NULL AUTO_INCREMENT,
    article BLOB NOT NULL,
    PRIMARY KEY (id)
);

Ở đây, cột

mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                   0 |                   0 |                   0 |
+---------------------+---------------------+---------------------+
0 được khai báo là
mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
+------------+------------+-------------------------+
| UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
+------------+------------+-------------------------+
| A          | B          |                       1 |
+------------+------------+-------------------------+
mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
+------------+------------+-------------------------+
| LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
+------------+------------+-------------------------+
| a          | b          |                       1 |
+------------+------------+-------------------------+
1, đây là loại phân biệt chữ hoa chữ thường. Nếu bạn muốn chuyển đổi cột để nó không phân biệt chữ hoa chữ thường, bạn có thể thay đổi loại từ
mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
+------------+------------+-------------------------+
| UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
+------------+------------+-------------------------+
| A          | B          |                       1 |
+------------+------------+-------------------------+
mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
+------------+------------+-------------------------+
| LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
+------------+------------+-------------------------+
| a          | b          |                       1 |
+------------+------------+-------------------------+
1 thành
mysql> SELECT UPPER('A'), UPPER('b'), UPPER('A') < UPPER('b');
+------------+------------+-------------------------+
| UPPER('A') | UPPER('b') | UPPER('A') < UPPER('b') |
+------------+------------+-------------------------+
| A          | B          |                       1 |
+------------+------------+-------------------------+
mysql> SELECT LOWER('A'), LOWER('b'), LOWER('A') < LOWER('b');
+------------+------------+-------------------------+
| LOWER('A') | LOWER('b') | LOWER('A') < LOWER('b') |
+------------+------------+-------------------------+
| a          | b          |                       1 |
+------------+------------+-------------------------+
0 bằng cách sử dụng một trong hai câu lệnh
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
8
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
9

ALTER TABLE news MODIFY article TEXT NOT NULL;
ALTER TABLE news CHANGE article article TEXT NOT NULL;

Trước MySQL 3. 22. 16,

mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
8
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
9.
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                   0 |                   0 |                   0 |
+---------------------+---------------------+---------------------+
8 không khả dụng, trong trường hợp đó bạn chỉ có thể sử dụng
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
8
mysql> SELECT STRCMP('Abc','abc'), STRCMP('abc','abc'), STRCMP('abc','Abc');
+---------------------+---------------------+---------------------+
| STRCMP('Abc','abc') | STRCMP('abc','abc') | STRCMP('abc','Abc') |
+---------------------+---------------------+---------------------+
|                  -1 |                   0 |                   1 |
+---------------------+---------------------+---------------------+
9.
mysql> SELECT STRCMP(BINARY 'Abc','abc'), STRCMP(BINARY 'abc','Abc');
+----------------------------+----------------------------+
| STRCMP(BINARY 'Abc','abc') | STRCMP(BINARY 'abc','Abc') |
+----------------------------+----------------------------+
|                         -1 |                          1 |
+----------------------------+----------------------------+
1. Xem Chương 8 để biết thêm thông tin

Làm cách nào để so sánh hai chuỗi trong truy vấn SQL?

Hàm STRCMP() so sánh hai chuỗi.

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.

Bạn có thể sử dụng. = Để so sánh các chuỗi?

Sản phẩm sử dụng sai toán tử khi so sánh một chuỗi, chẳng hạn như sử dụng "==" khi. phương thức equals() nên được sử dụng thay thế. Trong Java, sử dụng == hoặc. = to so sánh hai chuỗi cho bằng nhau thực sự so sánh hai đối tượng cho bằng nhau chứ không phải giá trị chuỗi của chúng cho bằng nhau .

Làm cách nào để sử dụng Regexp_like trong MySQL?

Hàm REGEXP_LIKE() trong MySQL được sử dụng để so khớp mẫu. Nó so sánh xem các chuỗi đã cho có khớp với biểu thức chính quy hay không. .
mysql> CHỌN
REGEXP_LIKE ('Ấn Độ Indonesia', '^in', 'i') AS 'Không phân biệt chữ hoa chữ thường',
REGEXP_LIKE ('Ấn Độ Indonesia', '^in', 'c') AS 'Phân biệt chữ hoa chữ thường';