Nhóm mysql phân biệt chữ hoa chữ thường

Lưu ý rằng hành vi (hiện tại) của

mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
+----------+-----------------+-----------------+
| name     | name REGEXP 'i' | name REGEXP 'I' |
+----------+-----------------+-----------------+
| copper   |               0 |               0 |
| gold     |               0 |               0 |
| iron     |               1 |               1 |
| lead     |               0 |               0 |
| mercury  |               0 |               0 |
| platinum |               1 |               1 |
| silver   |               1 |               1 |
| tin      |               1 |               1 |
+----------+-----------------+-----------------+
0 không phân biệt chữ hoa chữ thường có thể dẫn đến một số kết quả không trực quan

mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+
| 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
+--------------------------+--------------------------+
|                        1 |                        1 |
+--------------------------+--------------------------+

Cả hai biểu thức đều đúng vì

mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
+----------+-----------------+-----------------+
| name     | name REGEXP 'i' | name REGEXP 'I' |
+----------+-----------------+-----------------+
| copper   |               0 |               0 |
| gold     |               0 |               0 |
| iron     |               1 |               1 |
| lead     |               0 |               0 |
| mercury  |               0 |               0 |
| platinum |               1 |               1 |
| silver   |               1 |               1 |
| tin      |               1 |               1 |
+----------+-----------------+-----------------+
3 và
mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
+----------+-----------------+-----------------+
| name     | name REGEXP 'i' | name REGEXP 'I' |
+----------+-----------------+-----------------+
| copper   |               0 |               0 |
| gold     |               0 |               0 |
| iron     |               1 |               1 |
| lead     |               0 |               0 |
| mercury  |               0 |               0 |
| platinum |               1 |               1 |
| silver   |               1 |               1 |
| tin      |               1 |               1 |
+----------+-----------------+-----------------+
4 tương đương khi phân biệt chữ hoa chữ thường không quan trọng

Nếu một đối sánh mẫu sử dụng hành vi phân biệt chữ hoa chữ thường khác với những gì bạn muốn, hãy kiểm soát nó theo cách tương tự như đối với so sánh chuỗi

  • Để làm cho mẫu đối sánh phân biệt chữ hoa chữ thường, hãy sử dụng chuỗi nhị phân cho một trong hai toán hạng (ví dụ: bằng cách sử dụng từ khóa

    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    5). Truy vấn sau đây cho biết cách cột không phải nhị phân
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    6 thường không phân biệt chữ hoa chữ thường

    mysql> SELECT name, name LIKE '%i%%', name REGEXP 'i' FROM metal;
    +----------+------------------+-----------------+
    | name     | name LIKE '%i%%' | name REGEXP 'i' |
    +----------+------------------+-----------------+
    | copper   |                0 |               0 |
    | gold     |                0 |               0 |
    | iron     |                1 |               1 |
    | lead     |                0 |               0 |
    | mercury  |                0 |               0 |
    | platinum |                1 |               1 |
    | silver   |                1 |               1 |
    | tin      |                1 |               1 |
    +----------+------------------+-----------------+

    Và truy vấn này cho biết cách buộc các giá trị

    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    6 phân biệt chữ hoa chữ thường bằng cách sử dụng
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    5

    mysql> SELECT name, BINARY name LIKE '%I%', BINARY name REGEXP 'I' FROM metal;
    +----------+------------------------+------------------------+
    | name     | BINARY name LIKE '%I%' | BINARY name REGEXP 'I' |
    +----------+------------------------+------------------------+
    | copper   |                      0 |                      0 |
    | gold     |                      0 |                      0 |
    | iron     |                      0 |                      0 |
    | lead     |                      0 |                      0 |
    | mercury  |                      0 |                      0 |
    | platinum |                      0 |                      0 |
    | silver   |                      0 |                      0 |
    | tin      |                      0 |                      0 |
    +----------+------------------------+------------------------+

    Sử dụng

    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    5 cũng có tác dụng làm cho
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    3 và
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    4 trong các biểu thức chính quy hoạt động như bạn mong đợi. Biểu thức thứ hai trong truy vấn sau đây cho kết quả thực sự chỉ đúng với các chữ cái viết hoa

    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    3
  • Khớp mẫu với cột nhị phân có phân biệt chữ hoa chữ thường. Để làm cho trận đấu không phân biệt chữ hoa chữ thường, hãy đặt cả hai toán hạng cùng một chữ cái. Để xem điều này hoạt động như thế nào, hãy sửa đổi bảng

    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    42 để thêm một cột
    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    43 giống như cột
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    6 ngoại trừ việc nó là
    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    45
    mysql> SELECT name, name REGEXP 'i', name REGEXP 'I' FROM metal;
    +----------+-----------------+-----------------+
    | name     | name REGEXP 'i' | name REGEXP 'I' |
    +----------+-----------------+-----------------+
    | copper   |               0 |               0 |
    | gold     |               0 |               0 |
    | iron     |               1 |               1 |
    | lead     |               0 |               0 |
    | mercury  |               0 |               0 |
    | platinum |               1 |               1 |
    | silver   |               1 |               1 |
    | tin      |               1 |               1 |
    +----------+-----------------+-----------------+
    5 thay vì
    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    45

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

    Truy vấn đầu tiên trong số các truy vấn sau đây cho thấy cách cột nhị phân

    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    43 thông thường phân biệt chữ hoa chữ thường trong các mẫu khớp và truy vấn thứ hai cho biết cách buộc nó không phân biệt chữ hoa chữ thường, sử dụng
    mysql> SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
    +--------------------------+--------------------------+
    | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' |
    +--------------------------+--------------------------+
    |                        1 |                        1 |
    +--------------------------+--------------------------+
    49

    Nhóm có phân biệt chữ hoa chữ thường không?

    GROUP BY dựa trên thuộc tính cột [NOT] CASESPECIFIC. Cột của bạn được xác định là không phân biệt chữ hoa chữ thường , vì vậy cả 'r' và 'R' đều được coi là bằng nhau.

    MySQL có thể phân biệt chữ hoa chữ thường không?

    Theo mặc định, tùy thuộc vào hệ điều hành và phân biệt chữ hoa chữ thường. Điều này có nghĩa là MySQL không phân biệt chữ hoa chữ thường trong Windows và macOS, trong khi nó phân biệt chữ hoa chữ thường trong hầu hết các hệ thống Linux . Tuy nhiên, bạn có thể thay đổi hành vi bằng cách thay đổi đối chiếu.

    Bạn có thể sử dụng trường hợp theo nhóm không?

    Chúng ta có thể sử dụng câu lệnh Case trong các truy vấn được chọn cùng với mệnh đề Where, Order By và Group By . Nó cũng có thể được sử dụng trong câu lệnh Chèn. Trong bài viết này, chúng ta sẽ khám phá câu lệnh CASE và các trường hợp sử dụng khác nhau của nó.

    Trường hợp khóa chính có phân biệt chữ hoa chữ thường trong MySQL không?

    có. ci không phân biệt chữ hoa chữ thường . nhưng có utf8_General_cs phân biệt chữ hoa chữ thường. Theo lỗi máy chủ. com/a/137466 giải pháp đơn giản nhất là sử dụng utf8_bin cho phân biệt chữ hoa chữ thường.