MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

4 cách tìm hàng có chứa chữ thường trong MariaDB

Dưới đây là bốn tùy chọn để trả về các hàng chứa ký tự viết thường trong MariaDB.

Dữ liệu mẫu

Giả sử chúng ta có một bảng với dữ liệu sau:

SELECT c1 FROM t1;

Kết quả:

+----------------+
| c1             |
+----------------+
| CAFÉ           |
| Café           |
| café           |
| 1café          |
| eCafé          |
| James Bond 007 |
| JB 007         |
| 007            |
| NULL           |
|                |
| É              |
| É 123          |
| é              |
| é 123          |
| ø              |
| Ø              |
+----------------+

Chúng ta có thể sử dụng các phương pháp sau để trả về các hàng có chứa chữ thường.

Tùy chọn 1:So sánh với Lớp ký tự POSIX

Chúng ta có thể sử dụng REGEXP toán tử để thực hiện so khớp một mẫu biểu thức chính quy.

Một tùy chọn đơn giản là so sánh cột của chúng tôi với [:lower:] Lớp ký tự POSIX:

SELECT c1 FROM t1
WHERE c1 REGEXP '[[:lower:]]';

Kết quả:

+----------------+
| c1             |
+----------------+
| Café           |
| café           |
| 1café          |
| eCafé          |
| James Bond 007 |
| é              |
| é 123          |
| ø              |
+----------------+

RLIKE là từ đồng nghĩa với REGEXP , vì vậy chúng tôi có thể thay thế REGEXP với RLIKE để có được kết quả tương tự:

SELECT c1 FROM t1
WHERE c1 RLIKE '[[:lower:]]';

Tùy chọn 2:So sánh với UPPER() Chuỗi

Một tùy chọn khác là sử dụng UPPER() hàm để so sánh giá trị ban đầu với chữ hoa tương đương của nó:

SELECT c1 FROM t1
WHERE BINARY UPPER(c1) <> BINARY c1;

Kết quả:

+----------------+
| c1             |
+----------------+
| Café           |
| café           |
| 1café          |
| eCafé          |
| James Bond 007 |
| é              |
| é 123          |
| ø              |
+----------------+

Bằng cách sử dụng không bằng (<> ) toán tử (bạn có thể sử dụng != một cách khác thay vì <> nếu bạn thích), chúng tôi chỉ trả về những hàng khác với chữ hoa tương đương của chúng. Lý do chúng tôi làm điều này là bởi vì, nếu một giá trị giống với chữ hoa tương đương của nó, thì nó đã là chữ hoa để bắt đầu (và chúng tôi không muốn trả lại nó).

Theo mặc định, MariaDB thực hiện tìm kiếm không phân biệt chữ hoa chữ thường và vì vậy tôi sử dụng BINARY toán tử để nhận tìm kiếm phân biệt chữ hoa chữ thường.

Điều này cũng có thể được thực hiện như sau:

SELECT c1 FROM t1
WHERE BINARY(UPPER(c1)) <> BINARY(c1);

Tùy chọn 3:So sánh với các ký tự thực tế

Một tùy chọn khác là sử dụng REGEXP toán tử có mẫu biểu thức chính quy bao gồm rõ ràng từng ký tự viết thường mà chúng tôi muốn đối sánh:

SELECT c1 FROM t1
WHERE BINARY c1 REGEXP BINARY '[abcdefghijklmnopqrstuvwxyz]';

Kết quả:

+----------------+
| c1             |
+----------------+
| Café           |
| café           |
| 1café          |
| eCafé          |
| James Bond 007 |
+----------------+

Lần này ít hàng được trả về hơn trong các ví dụ trước. Đó là bởi vì tôi không chỉ định các ký tự như éø , đã được trả lại trong các ví dụ đó. Kết quả của chúng tôi có chứa é nhưng hàng đó chỉ được trả về vì nó cũng chứa các ký tự viết thường khác do phù hợp.

Do đó, bạn cần đảm bảo rằng bạn đã bao gồm tất cả các ký tự hợp lệ nếu bạn sử dụng tùy chọn này.

Tùy chọn 4:So sánh với một loạt các ký tự

Một cách khác để làm điều đó là chỉ định phạm vi ký tự mà chúng tôi muốn đối sánh:

SELECT c1 FROM t1
WHERE BINARY c1 REGEXP BINARY '[a-z]';

Kết quả:

+----------------+
| c1             |
+----------------+
| Café           |
| café           |
| 1café          |
| eCafé          |
| James Bond 007 |
+----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cần tìm gì nếu Bản sao MySQL của bạn đang bị trễ

  2. MariaDB JSON_VALID () Giải thích

  3. Giải thích về toán tử MariaDB MINUS

  4. Cách cài đặt, bảo mật và điều chỉnh hiệu suất của máy chủ cơ sở dữ liệu MariaDB

  5. Cách INSTR () hoạt động trong MariaDB