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 quanmysql> 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ọngNế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>
5]. Truy vấn sau đây cho biết cách cột không phải nhị phânSELECT 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 | +----------+-----------------+-----------------+mysql>
6 thường không phân biệt chữ hoa chữ thườngSELECT 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 | +----------+-----------------+-----------------+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>
6 phân biệt chữ hoa chữ thường bằng cách sử dụngSELECT 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 | +----------+-----------------+-----------------+mysql>
5SELECT 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 | +----------+-----------------+-----------------+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>
5 cũng có tác dụng làm choSELECT 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 | +----------+-----------------+-----------------+mysql>
3 và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 | +----------+-----------------+-----------------+mysql>
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 hoaSELECT 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 | +----------+-----------------+-----------------+mysql>
3SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+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>
42 để thêm một cộtSELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+mysql>
43 giống như cộtSELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+mysql>
6 ngoại trừ việc nó là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 | +----------+-----------------+-----------------+mysql>
45SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+mysql>
5 thay vì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 | +----------+-----------------+-----------------+mysql>
45SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+mysql>
0SELECT 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 | +----------+-----------------+-----------------+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>
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ụngSELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+mysql>
49SELECT 'a' REGEXP '[[:lower:]]', 'a' REGEXP '[[:upper:]]';
+--------------------------+--------------------------+ | 'a' REGEXP '[[:lower:]]' | 'a' REGEXP '[[:upper:]]' | +--------------------------+--------------------------+ | 1 | 1 | +--------------------------+--------------------------+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.